在内部类中使用struct时编译错误

时间:2016-11-26 22:59:00

标签: c++

我找不到任何能帮助我理解为什么以下代码无法编译的答案。 我在类的私有部分(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'

1 个答案:

答案 0 :(得分:1)

您需要在引用内部类之前声明它:

class Foo {
    class Node;
public:

    // ...