Есть два класса, которые связаны друг с другом в своих заголовках:
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 из-за этого не подсвечивается.
Если я удаляю #include "plotter.h"
в заголовке PlotMarker или #include "plotmarker.h"
в заголовке Plotter, Qt Creator подсвечивает код как обычно, но компиляция завершается неудачно из-за ошибок о недопустимом использовании неполного типа.
Не могли бы вы сказать мне, что не так? Я думаю, что это из-за неправильных перекрестных ссылок заголовков, но я столкнулся с этим , и это мне не помогло.