如果我定义一个嵌套类,然后创建一个这样的实例:
class A
{
class B
{
...
};
B b;
};
一切都好。但是如果我只是在A中声明B并在外面定义它,我就无法创建B的实例,可能是因为编译器不知道B实例需要多少空间。但是当您在另一个内部定义类时,代码的可读性不高。有没有办法使这项工作?
class A
{
class B;
B b;
};
class A::B
{
...
};
答案 0 :(得分:1)
简单,只需定义B类,然后在A中定义它的实例。
class B
{
}
class A
{
B memberB;
}
或者你可以转发声明:
class B;
class A
{
B memberB;
}
class B
{
}
很少需要真正嵌套的类,而且根本不是很有用。
答案 1 :(得分:1)
当您使用类类型作为成员时,需要知道具体类。这就是为什么你的第二个案例不起作用的原因。解决方法是使用指针B
:
#include <memory>
class A
{
class B;
std::unique_ptr<B> b;
};
class A::B
{
};