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;
};
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;
};