【发布时间】:2013-03-29 05:13:15
【问题描述】:
比如我有一个A.h头文件,里面有一个类声明,比如:
class A {
public:
struct Node {
int val;
};
private:
B* b;
};
它包含一个在 B.h 文件中定义的 B 类指针:
class B {
public:
A::Node* node_new() { ***};
};
当我编译项目时,出现“嵌套名称说明符”错误。如何解决?
【问题讨论】:
-
你不认为这会在两者之间创建一个永无止境的递归关系吗?
-
有前向声明(A.h中B的decl,A.h中包含B.h)?
-
wtb .cpp 文件。我想你会需要一个。
-
@HankyPankyㇱ 是的,我知道。但是如何解决这个问题呢?
-
在将前向声明
class B;放在顶部、定义node_new() { return new A::Node(); }并实现简单的int main() { B b; A::Node * an = b.node_new(); }时编译对我来说很好 - 不会发生编译器错误。 (VS 2012)