我找不到任何能帮助我理解为什么以下代码无法编译的答案。 我在类的私有部分(Foo)中声明了一个结构体,并尝试在内部类(Bar)中使用它。
class Foo {
public:
Foo();
class Bar;
class Bar {
public:
Bar();
Foo::Node createNode();
};
private:
struct Node{
Node(int d) : data(d) {};
int data;
};
};
编译器抛出以下错误:
.../Foo.h:9:14: error: no type named 'Node' in 'Foo'
答案 0 :(得分:1)
您需要在引用内部类之前声明它:
class Foo {
class Node;
public:
// ...