与类相同类型的对象

时间:2011-10-09 07:41:21

标签: c++ object

在c ++中,我如何将对象作为与其包含类相同的类型,例如:

class Test
{
public:

private:
  Test t;
};

3 个答案:

答案 0 :(得分:3)

简短回答,你不能。

您可以指向同一类型的对象,但不能指向对象本身。

如果你需要这样做(即)不能使用指针,你的设计可能是错误的。如果你可以使用指针,请使用它。

有些原因:

您必须在实例化时创建对象,这意味着对构造函数进行无限递归调用。

对象的sizeof()是什么?

答案 1 :(得分:2)

你不能这样做,因为它需要无限递归。 (您的t将包含另一个t,因此您无限期地t.t.t.t.t.t.t.t....无效。你可以做的是把一个指针指向另一个对象,例如

private:
   Test *t;

问题是当你写:

Test t;

编译器需要知道Test的大小,以便提供足够的存储空间。在您编写Test t;时,由于编译器没有看到Test定义的结尾(即结束后的; },因此该大小未知。 })因此无法确定它的大小。

答案 2 :(得分:1)

不可能。在最大值,您可以使用相同的引用或指针 其中class

class Test
{
private:
  Test *t;
};

作为旁注,允许使用static个对象。这是因为它们实际上并不与class对象的任何特定实例绑定。即:

class Test
{
private:
  Test t; // error
  static Test st; // ok!
};  // define 'st' in the translation unit