0

我有这两个简单的文件:

Trade.mqh

class Trade;
class Trade {
  public:
    #include "Order.mqh"
    struct TradeRequest {
      ENUM_ORDER_STATE type;
    };
};

Order.mqh

class Order;
class Trade;
#include "Trade.mqh"

class Order : public Trade {
  public:
    enum ENUM_ORDER_STATE {
      ORDER_FOO,
      ORDER_BAR
    };
    TradeRequest order;
};

但是编译失败。

如何在不保留相同文件且不将结构移动到一个文件的情况下解决编译问题?


我想保持结构的原样(两个单独的文件),贸易类文件中的贸易相关结构,它依赖于订单类文件中定义的订单相关枚举。

错误是:

  • MQL4/MQL5 用于Trade.mqh

    '交易' 结构未定义 (Order.mqh)

    'TradeRequest' - 没有类型的声明 (Order.mqh)

  • MQL4 用于Order.mqh

    'ENUM_ORDER_STATE' - 没有类型的声明 (Trade.mqh)

    '贸易' - 结构未定义 (Order.mqh)

    ';' - 程序意外结束 (Order.mqh)

    在 MQL5 中编译,但带有枚举已经定义的警告。

4

2 回答 2

3

enum在上面声明class Trade,我认为没有任何理由指定enum为类的属性。

于 2017-01-21T10:27:58.653 回答
0

MQL5 的支持团队确认,如果在 Order 类中声明了 ENUM_ORDER_STATE,则无法编译此代码。

唯一的解决方法是在结构定义之上定义依赖元素(枚举)。

于 2017-01-23T12:23:59.360 回答