从外部类访问嵌套的内部类结构

时间:2011-11-29 21:44:45

标签: c++ class nested

class A
{
 class B;
 B::data myData; //Error: incomplete type not allowed.

    class B
    {
    public:
        struct data
        {
        int number;
        };
    };
};

在上面的代码中,我如何在类A中声明类型数据的成员变量?

3 个答案:

答案 0 :(得分:3)

我认为您需要做的就是将类定义放在变量声明的前面。编译器不知道class B内部是什么,只有它存在,直到它遇到类的实际定义

答案 1 :(得分:3)

B的声明中使用

A::myData之前,

class A { class B { public: struct data { int number; }; }; B::data myData; }; 必须定义

{{1}}

答案 2 :(得分:0)

使用范围说明符,并确保在文件中定义之前不使用该类型:

class A
{   
    class B
    {
    public:
        struct data
        {
        int number;
        };
    };

    B::data myData;
};

另外,请注意,除非您只使用指向该类的指针,否则前向声明不起作用。当您创建类的实例时,它需要立即为该类提供定义。