尽管不存在复杂结构,但结构具有对象且无法复制
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 下编译了相同的代码并且运行良好。
我有以下 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 下编译了相同的代码并且运行良好。