头中有两个相互关联的类:
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,但对我没有帮助。
答案 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"
// ...