Struct 如何在两个不同的文件中编译交叉枚举和结构?

Struct 如何在两个不同的文件中编译交叉枚举和结构?,struct,compiler-errors,mql4,mql5,Struct,Compiler Errors,Mql4,Mql5,我有两个简单的文件: Trade.mqh Order.mqh 然而,汇编失败了 如何在不保留相同文件和不将结构移动到一个文件的情况下解决编译问题 我想保持结构的原样(两个单独的文件),贸易类文件中的贸易相关结构,它依赖于订单类文件中定义的订单相关枚举 错误是: MQL4/MQL5用于Trade.mqh “Trade”结构未定义(Order.mqh) “TradeRequest”-不带类型的声明(Order.mqh) MQL4用于Order.mqh “枚举顺序状态”-不带类型的声明(Trad

我有两个简单的文件:

Trade.mqh
Order.mqh
然而,汇编失败了

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


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

错误是:

  • MQL4/MQL5用于
    Trade.mqh

    “Trade”结构未定义(Order.mqh)

    “TradeRequest”-不带类型的声明(Order.mqh)

  • MQL4用于
    Order.mqh

    “枚举顺序状态”-不带类型的声明(Trade.mqh)

    'Trade'-struct未定义(Order.mqh)

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

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


  • 声明
    enum
    以上
    类别交易
    ,我认为没有任何理由将
    enum
    指定为类别的属性。

    声明
    enum
    以上
    类别交易
    ,我认为没有任何理由将
    enum
    指定为类的属性。

    来自MQL5的支持团队确认,如果在ORDER类内部声明了enum\u ORDER\u STATE,则无法编译此代码


    唯一的解决方法是在struct定义之上定义dependee元素(enum)。

    来自MQL5的支持团队确认,如果在ORDER类内部声明了enum\u ORDER\u STATE,则无法编译此代码


    唯一的解决办法是在struct的定义之上定义dependee元素(enum)。

    我认为这不起作用,请记住,它也不起作用。这对你有用吗?我认为这行不通,据我记忆所及,它也行不通。对你有用吗?
    class Trade;
    class Trade {
      public:
        #include "Order.mqh"
        struct TradeRequest {
          ENUM_ORDER_STATE type;
        };
    };
    
    class Order;
    class Trade;
    #include "Trade.mqh"
    
    class Order : public Trade {
      public:
        enum ENUM_ORDER_STATE {
          ORDER_FOO,
          ORDER_BAR
        };
        TradeRequest order;
    };