尽管不存在复杂的结构,但结构具有对象且无法复制

时间:2018-01-14 23:07:16

标签: struct compiler-errors mql4 mql5

我有以下MQL代码:

class Account {};

class Trade {

  protected:

    struct TradeParams {
      uint     slippage;   // Value of the maximum price slippage in points.
      Account *account;    // Pointer to Account class.
    };

    TradeParams trade_params;

  public:

     void Trade(TradeParams &_params) {
       trade_params = _params; // Error: '=' - structure have objects and cannot be copied.
     }

};

但是,由于以下错误,MetaTrader platform无法编译文件:

  

'=' - 结构有对象且无法复制TestTrade.mqh 17 21

我正在使用MetaEditor 5.00 build 1601(2017年5月)。

我已经检查了这个similar question,但我的结构不包含任何复杂的对象,如字符串。建议是使用指针而不是我实际使用的结构。我的目标是拥有一个带有struct参数的类构造函数,如上所示。

上面的结构定义有什么问题以及如何纠正?

2 个答案:

答案 0 :(得分:1)

您应该在MQL4 / 5中的类中使用结构或类中的结构。所以,要么:

struct Account {int m_accountNumber; };
struct TradeParameters {uint m_slippage; Account m_account; };
struct Trade {protected: TradeParameters m_tradeParam; public : };

或与班级相同。首选类是因为你不能将字符串作为结构成员(你将遇到复制和其他操作的问题)。

答案 1 :(得分:0)

似乎这个编译问题已在最新版本的平台中得到修复。

我在MetaEditor v5.00 build 1745下编译了相同的代码,它工作正常。