【发布时间】:2016-04-01 06:55:00
【问题描述】:
我有一个 PieceStrategy 类:
#include "QueenStrategy.cpp"
class PieceStrategy {
void promoteToQueen() {
this = new QueenStrategy();
}
}
我有一个继承自它的 QueenStrategy 类:
#include "PieceStrategy.cpp"
class QueenStrategy : public PieceStrategy {}
现在出现循环包含问题。但在这种情况下,我不能使用前向声明。
我该怎么办?
【问题讨论】:
-
您不应包含 cpp(实现)文件。你为什么要这样做?
-
执行
this = new ...不会像您期望的那样工作。*this = ...可能会部分工作,但它仍然不会使this成为新类的实例。 -
至于你的问题,不要在类中内联定义成员函数,而是在源文件中进行。那么你就不必在
"PieceStrategy.h"头文件中包含"QueenStrategy.h"头文件了。 -
哦等等,您是否包含源文件?不要那样做!改用 header 文件(以
.h结尾),并将源代码分离到 source 文件中(以.cpp结尾)。
标签: c++ oop circular-dependency forward-declaration