C++ - 是否可以让 subclass 按值包含 class?

C++ - Is possible to have subclass contain the containing class by value?

class Containing{

    class Subclass{

        Containing cont;

    };

};

目前显示 "error: field cont has incomplete type"。这对 C++ 来说根本不可能吗?或者当有人需要这个时是否意味着他们的程序设计有误? Subclass 应该是派生的/单独的 class 吗?

我想你想要的可能是一个指针:

class Containing;

class Containing{

    class Subclass{

        Containing* cont;

    };

};

在Java中,class个实例默认是指针。这意味着这只是一个地址值,其中包含包含对象的地址。所以 cont 是一个单独的实例,您通过指针引用它。您的代码不起作用,因为 Containing 的声明尚未完成,因此 Containing 尚不清楚。它需要自己的声明来完成自己的声明。

我在 class 上面所做的是前向声明。这意味着我告诉编译器有一个 class 声明了名称 Containing。然后你可以使用指向 Containing 的指针,因为你不必知道任何关于 Containing 的成员或大小的信息。

请注意,默认情况下您没有指针,您首先需要一个 Subclass 的实例,也许这就是您想要的:

class Containing;

class Containing{
    Containing* cont;
};

这与

的问题相同
class Containing; 
class Subclass 
{ 
    Containing cont; 
};

你可以像非嵌套问题一样解决它,通过在它依赖的class之后定义依赖class。

class Containing
{
    class Subclass;
};

class Containing::Subclass
{
    Containing cont;
};