0

我有以下 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 平台不会编译该文件:

'=' - 结构有对象并且不能被复制 TestTrade.mqh 17 21

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

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

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

4

2 回答 2

1

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

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

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

于 2018-01-15T09:54:11.560 回答
0

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

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

于 2018-01-17T12:41:22.950 回答