1

为了简化我遇到的问题,我在foo.mqh和中包含了两个类bar.mqh

当我编译它们时,我得到:

'bar' - wrong parameters count  foo.mqh Line 20 Column 9

这是这一行foo.mqh

foobar(bar  & b) { example = b;} 

我已经阅读了其他处理此错误的帖子,但它们似乎不是面向对象的,我无法将这些实例与这个相关联。

是那个栏有默认值吗?....因为构造函数? 实际上这可能不是因为如果我把它们放在同一个文件中,我会得到同样的错误。

有没有办法解决这个问题?

任何帮助,将不胜感激。谢谢


bar.mqh

#property copyright "Copyright 2015, MetaQuotes Software Corp."   // 01
#property link      "https://www.mql5.com"                        // 02
#property strict                                                  // 03
                                                                  // 04
class bar{                                                        // 05
   private:                                                       // 06
      int b;                                                      // 07
      int u;                                                      // 08
      int g;                                                      // 09
   public:                                                        // 10
      bar * operator=(const bar & example)                        // 11
      {                                                           // 12
         b = example.b;                                           // 13
         u = example.u;                                           // 14
         g = example.u;                                           // 15
         return  GetPointer(this);                                // 16
      }                                                           // 17
      bar(bar & example)                                          // 18
      {                                                           // 19
         b = example.b;                                           // 20
         u = example.u;                                           // 21
         g = example.u;                                           // 22
      }                                                           // 23
                                                                  // 24
};                                                                // 25

foo.mqh

#property copyright "Copyright 2015, MetaQuotes Software Corp."   // 01
#property link      "https://www.mql5.com"                        // 02
#property strict                                                  // 03
                                                                  // 04
                                                                  // 05
#include<bar.mqh>                                                 // 06
                                                                  // 07
class foo {                                                       // 08
};                                                                // 09
                                                                  // 10
class foobar: public foo {                                        // 11
    private:                                                      // 12
        bar example;                                              // 13
    public:                                                       // 14
        foobar(bar  & b) { example = b;}                          // 15
        bar getExample() { return example; }                      // 16
};                                                                // 17
4

1 回答 1

1

问题是我没有构造函数/析构函数声明。

bar.mqh下文:

   //+------------------------------------------------------------------+
   //| bar.mqh                                                          |
   //| Copyright 2015, MetaQuotes Software Corp.                        |
   //| https://www.mql5.com                                             |
   //+------------------------------------------------------------------+
   #property copyright "Copyright 2015, MetaQuotes Software Corp."
   #property link "https://www.mql5.com"
   #property strict
   class bar{
   private:
      int b;
      int u;
      int g;
      public:
         bar() {}
         ~bar() {}
         bar * operator=(const bar & example)
         {
            b = example.b;
            u = example.u;
            g = example.u;
            return GetPointer(this);
         }
         bar(bar & example)
         {
            b = example.b;
            u = example.u;
            g = example.u;
         }
   };

foo.mqh不必改变。

于 2015-04-06T16:49:00.687 回答