2

如果我定义一个嵌套类,然后创建一个这样的实例:

class A  
{   
    class B  
    {  
        ...
    };
    B b; 
};

一切都好。但是如果我只是在 A 内部声明 B 并在外部定义它,我就无法创建 B 的实例,可能是因为编译器不知道 B 的实例需要多少空间。但是当您在另一个类中定义一个类时,代码的可读性并不高。有没有办法使这项工作?

class A  
{
    class B;
    B b;
};
class A::B
{
    ...
};
4

2 回答 2

1

当您使用类类型作为成员时,需要知道具体类。这就是为什么您的第二种情况不起作用的原因。一种解决方法是使用指向B

#include <memory>
class A  
{
    class B;
    std::unique_ptr<B> b;
};
class A::B
{    
};
于 2013-02-03T22:45:22.547 回答
1

很简单,只需定义类 B,然后在 A 中定义它的一个实例。

class B
{
}
class A
{
   B memberB;
}

或者您可以转发声明它:

class B;
class A
{
   B memberB;
}
class B
{
}

真正的嵌套类很少需要,而且根本不是很有用。

于 2013-02-03T21:45:21.960 回答