gpt4 book ai didi

compiler-errors - 前向声明在MQL中无法按预期工作

转载 作者:行者123 更新时间:2023-12-02 11:00:49 27 4
gpt4 key购买 nike

我在以下层次结构中的4个不同文件中有4个类:

|-- Terminal (Chart)
| |-- Chart (Draw, Market)
| | |-- Draw
| | |-- Market

括号中是类指针,该类将类实现为类变量。

因此Draw和Market类扩展了Chart,后者扩展了Terminal。尽管我仍然想定义一些类指针,但是Terminal类本身具有指向Chart类的 chart指针。

这些文件是:
Terminal.mqh
// Forward declaration.
class Chart;
class Terminal;

// Includes.
#include "Chart.mqh"

class Terminal {
protected:
Chart *chart;
};
Chart.mqh
// Forward declaration.
class Chart;
class Terminal;

// Includes.
#include "Terminal.mqh"

class Chart : public Terminal {
protected:
// Includes.
#include "Draw.mqh"
#include "Market.mqh"

// Class variables.
Draw *draw;
Market *market;
};

注意: DrawMarket文件的include放置在类定义之后,只是为了确保当前 Chart类是在加载这些include时定义的,并且是在声明使用它的变量之前定义的。
Draw.mqh
// Forward declaration.
class Chart;
class Draw;

#include "Chart.mqh"

class Draw : public Chart {
// Some drawing methods.
};
Market.mqh
// Forward declaration.
class Chart;
class Market;

// Includes.
#include "Chart.mqh"

class Market : public Chart {
// Some market methods.
};

为了避免在加载include时出现任何编译器错误,我进行了前向声明,但是编译仍然失败。

错误如下(取决于我要编译的文件):
  • Terminal.mqh(3错误,0警告)

    'Terminal' - struct undefined Chart.mqh 8 22

    'Chart' - struct undefined Draw.mqh 7 21

    'Chart' - struct undefined Market.mqh 8 23

  • Chart.mqh(2错误,0警告)

    'Chart' - struct undefined Draw.mqh 7 21

    'Chart' - struct undefined Market.mqh 8 23

  • Draw.mqh(1错误,0警告)

    'Chart' - struct undefined Market.mqh 8 23

  • Market.mqh(1错误,0警告)

    'Chart' - struct undefined Draw.mqh 7 21


  • 经过最新版本1498测试。

    上述错误对于MQL4和MQL5编译器版本都是相同的。

    以上问题有解决方案吗?我想念什么吗?

    为了澄清,我的目标是将每个类保存在单独的文件中。

    最佳答案

    它应该可以工作,至少我认为如果将类放在一个地方没有问题:

    enter image description here

    关于compiler-errors - 前向声明在MQL中无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41728958/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com