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

匿名的

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

例如,在下面的代码中,由于“字段'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>标准禁止该程序使用的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我们不能在Java中实例化一个抽象类?

为什么我不能在Ruby中实例化Integer类?

当我们在同一类中创建类的实例时会发生什么?

为什么我不能从同一类C#中的方法访问公共字符串

为什么不能在一个朋友类中实例化其构造函数是私有的类?

为什么不能在Ruby的单例类定义中访问类实例变量?

为什么对于函数类未定义此属性,但为同一类的实例定义了此属性?

在Interface Builder中实例化同一类的多个对象会导致共享属性

为什么不能在同一行上定义类和函数?

为什么这两个对象在飞镖中不是同一类型?

为什么不能在java中的实例(类)范围内定义while循环或条件语句

为什么我不能在 Child 类中创建另一个 Child 对象?(对“vtable”的未定义引用)

为什么不能在类中初始化实例变量?

为什么我不能在Java中抛出或捕获泛型类的实例?

为什么不能在模板化类中内联定义未模板化的朋友?

为什么我不能在 Javascript 中的同一个类函数中调用一个类函数?

为什么不能在函数中实例化对象

在类中调用同一类的实例

为什么我不能在PHP中为类变量定义连接字符串?

为什么我不能在类的不同行中声明和定义成员变量?

为什么我不能在 Java 的本地类中声明对象?

为什么我不能在addEventListener中调用类函数

为什么我不能在Python中更改类的属性

为什么我不能实例化这个类?

为什么我不能在类中初始化非常量静态成员或静态数组?

为什么在多个.cpp文件中定义的同一类不会导致链接器多个定义错误?

为什么我的对象不能访问公共基类中定义的另一个对象的受保护成员?

为什么我们不能在Thread对象的同一实例上两次调用start方法?

为什么我不能测试定义了一个类的实例