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

Structure have objects and cannot be copied, despite no complex structures are present

我有以下 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 没有编译文件:

'=' - structure have objects and cannot be copied TestTrade.mqh 17 21

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

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

上面的结构定义有什么问题,如何更正?

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

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

或同类。 类 是首选,因为您不能将字符串作为结构成员(您将在复制和其他操作时遇到问题)。

看来这个编译问题已经在最新版本的平台中修复了。

我在 MetaEditor v5.00 build 1745 下编译了相同的代码并且运行良好。