我有以下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参数的类构造函数,如上所示。
上面的结构定义有什么问题以及如何纠正?
答案 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下编译了相同的代码,它工作正常。