Как скомпилировать пересекающиеся enum и struct в двух разных файлах?

У меня есть два простых файла:

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;
};

Однако компиляция не работает.

Как исправить проблему компиляции, не сохраняя одни и те же файлы и не перенося структуру в один файл?


Я хочу сохранить структуру такой, какая она есть (два отдельных файла), структуру, связанную с торговлей, в файле класса Trade, которая зависит от перечисления, связанного с заказом, которое определено в файле класса Order.

Ошибки:

  • #P6# <блочная цитата> #P7# #P8#
  • #P9#
    #P10# #P11# #P12#
    #P13#

person kenorb    schedule 20.01.2017    source источник


Ответы (2)


Объявите enum выше class Trade, я не думаю, что есть какая-то причина назначать enum свойством класса.

person Daniel Kniaz    schedule 21.01.2017
comment
Я не думаю, что это сработает, насколько я помню, это тоже не сработало. Это сработало для вас? - person kenorb; 21.01.2017

Служба поддержки MQL5 подтвердила, что невозможно скомпилировать этот код, если внутри класса Order объявлен ENUM_ORDER_STATE.

Единственный обходной путь — определить зависимые элементы (перечисление) над определением структуры.

person kenorb    schedule 23.01.2017