C++ プログラムにファイルをインクルードしようとしていますが、エラーが発生し続けます:
ShapeVisitor.h:9:28: error: ‘Circle’ has not been declared
問題は、クラスの構造が循環依存になることだと思います。これを解決するにはどうすればよいですか?
クラスヘッダーは以下のとおりです...
//Circle.h
#ifndef CIRCLE_H
#define CIRCLE_H
// headers, ...
#include "Shape.h"
class Circle: public Shape {
//class declaration
}
#endif
//Shape.h
#ifndef SHAPE_H
#define SHAPE_H
// headers, ...
#include <iostream>
class Shape {
//a certain method in the class declaration looks like this
virtual void accept(ShapeVisitor& v) = 0;
//rest of class
}
#endif
//ShapeVisitor.h
#ifndef SHAPEVISITOR_H
#define SHAPEVISITOR_H
#include "Circle.h"
class ShapeVisitor {
//a method in the class looks like this:
virtual void visitCircle(Circle *s) = 0;
//rest of class
}
#endif
ご覧のとおり、circle には shape が含まれており、これには shapevisitor が含まれており、これにも circle が含まれています。
何か案は?