交叉引用标头中的错误“未终止的条件指令”

时间:2018-07-04 11:29:54

标签: c++ qt compiler-errors include header-files

头中有两个相互关联的类:

PlotMarker

#ifndef PLOTMARKER_H
#define PLOTMARKER_H

#include <QObject>
#include "plotter.h"

class Plotter;

class PlotMarker : public QObject
{
    // ...
    Plotter* m_attachedPlot;    
    // ...
};

#endif // PLOTMARKER_H

绘图仪

#ifndef PLOTTER_H
#define PLOTTER_H

// ...
#include "plotmarker.h"
// ...

class PlotMarker;

class Plotter : public QQuickPaintedItem
{
    // ...
    QLinkedList<PlotMarker*> m_markerList;
    // ...
};

#endif // PLOTTER_H

程序编译良好,但是在error: unterminated conditional directive中出现了错误#ifndef,因此IDE中的类代码未突出显示。

如果我删除了PlotMarker标题中的#include "plotter.h"或Plotter标题中的#include "plotmarker.h",Qt Creator会照常突出显示代码,但是由于有关无效使用不完整类型的错误,编译失败。

你能告诉我怎么了吗?我认为是因为错误的标头交叉引用,但我遇到了this,但对我没有帮助。

1 个答案:

答案 0 :(得分:2)

问题已解决。

我刚刚将#include中的一个从标题移到了源文件,并且它已经起作用了。

plotmarker.h

#ifndef PLOTMARKER_H
#define PLOTMARKER_H

#include <QObject>

class Plotter;

class PlotMarker : public QObject
{
    // ...
    Plotter* m_attachedPlot;    
    // ...
};

#endif // PLOTMARKER_H

// ...

plotmarker.cpp

#include "plotmarker.h"
#include "plotter.h"
// ...