gpt4 book ai didi

c++ - 为什么我不能在类定义中实例化同一类的对象

转载 作者:太空宇宙 更新时间:2023-11-04 16:12:01 24 4
gpt4 key购买 nike

我想知道为什么我不能在类定义中实例化类的对象。

例如在下面的代码中,我收到错误消息“字段‘a’的类型不完整”

但是在模板类C中没有这样的错误。

#include <iostream>

using namespace std;
template < template <typename> class TT> class X
{
};

template < typename T> class C
{
C no;
};

class obj
{
public:
obj a;
}

int main()
{
return 0;
}

最佳答案

如果您实际上尝试实例化 C那么,是的,你会得到同样的错误。类模板通常不会导致编译错误:将它们实例化为类会:

template <typename T>
class C
{
C no;
};

int main()
{
C<int> c; // error: 'C<T>::no' has incomplete type
}

类的实例不能包含其自身的实例;那将需要无限的内存。 C<int>将包含 C<int>其中将包含 C<int>其中将包含 C<int> ……

更正式地说,因此无法确定 C<int> 的大小,这就是标准用来禁止该程序的问题。

关于c++ - 为什么我不能在类定义中实例化同一类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27601862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com