0
我无法找到任何帮助我理解下列代码无法编译的答案。 Im在类(Foo)的私有部分中声明一个结构体,并试图像这样在内部类(Bar)中使用它。在内部类中使用struct时编译错误
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'
AC(++)编译器从读从顶部到底部,如果在某一行没有定义类型(因为它是后来定义的),它不能被引用。解决方案:将结构节点的定义移到类栏的定义之上。顺便说一句:如果你有这个私人结构,你会收到关于可见性的另一个错误。 – EGOrecords