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

时间:2017-01-20 23:14:33

标签: struct compiler-errors mql4 mql5

我有这两个简单的文件:

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类文件中定义的顺序相关枚举。

错误是:

  • Trade.mqh

    的MQL4 / MQL5
      

    '贸易' struct undefined(Order.mqh)

         

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

  • Order.mqh

    的MQL4
      

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

         

    '贸易' - struct undefined(Order.mqh)

         

    &#39 ;;' - 程序的意外结束(Order.mqh)

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

2 个答案:

答案 0 :(得分:1)

var tags = (string[])shellFile.Properties.System.Keywords.ValueAsObject; tags = tags ?? new string[0]; if (tags.Length != 0) { foreach (string str in tags) { Console.WriteLine("keyword:" + str); } } 之上声明enum,我认为没有理由将class Trade指定为该类的属性。

答案 1 :(得分:0)

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

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