我在 C++ 中有一个涉及循环依赖和继承的问题。
我已经部分实现了设计,我将使用伪代码来说明问题发生的位置。
第一部分是:
//app.h
include rel.h
class Rel; // forward declaration
class App {
shared_ptr<Rel> //member variable
}
//rel.h
include app.h
class App; //forward declaration
class Rel {
shared_ptr<App> //member variable
}
直到这里,程序编译没有警告
然后,我想添加继承如下:
//app.h
include rel.h
include drel.h
class Rel; // forward declaration
class DRel // forward declaration
class App {
shared_ptr<Rel> //member variable
shared_ptr<DRel> //member variable
}
//rel.h (the same as before)
include app.h
class App; //forward declaration
class Rel {
shared_ptr<App> //member variable
}
//drel.h
include app.h
include rel.h
class App; //forward declaration
class DRel: Rel { // compile error here: expected class name before { token
shared_ptr<App> //member variable
}
如您所见,编译器会抛出“{ token 之前的预期类名”,这意味着Rel
没有解决,但为什么没有继承的第一个代码有效而第二个代码无效?我该如何解决?这是一个“错误”的模式吗?
我正在使用 c++14
我知道有很多关于我遇到的问题的问题,但我找不到具体问题的答案。可能我没看到...