C++ 让一个对象包含另一个相同类型的对象?

C++ 让一个对象包含另一个相同类型的对象?,c++,pointers,C++,Pointers,我想创建一个包含相同类型对象的对象。创建此类型的对象时,它会创建另一个对象,然后创建另一个对象,依此类推,直到长度耗尽为止。然而,我得到了一个临时警告的地址。我该怎么做 class A { A(int len) { if(len > 0) { _a = & A(len-1); } else { _a = NULL; } } A* _a; } 与其获取临时对象的地址,不如创建一个

我想创建一个包含相同类型对象的对象。创建此类型的对象时,它会创建另一个对象,然后创建另一个对象,依此类推,直到长度耗尽为止。然而,我得到了一个临时警告的地址。我该怎么做

class A {
   A(int len) {
      if(len > 0) {
         _a = & A(len-1);
      }
      else {
         _a = NULL;
      }
   }

   A* _a;
}

与其获取临时对象的地址,不如创建一个新对象:

class A {
   A(int len) {
      if(len > 0) {
         _a = new A(len-1);
      }
      else {
         _a = NULL;
      }
   }

   A* _a;
}

与其获取临时对象的地址,不如创建一个新对象:

class A {
   A(int len) {
      if(len > 0) {
         _a = new A(len-1);
      }
      else {
         _a = NULL;
      }
   }

   A* _a;
}

这就是所描述的。但是别忘了处理A的析构函数、复制构造函数和复制赋值操作符……非常感谢。有没有一种方法可以让指针绕过它,实际上它包含了一个对象?“Lua:不,但幸运的是,你不需要这样做。@ Lua:一个对象不能包含同一类型的另一个对象的原因是C++中包含一个成员真的包含它的意思。成员占用的内存是包含对象占用的内存的一部分。那么,一旦您添加了一些其他成员数据以指示这是否是行的结尾,您的对象可能会有多大?@aschepler:+1,这正是我在被现实世界中的其他事情分心之前想说的。谢谢你提到这个!这就是所描述的。但是别忘了处理A的析构函数、复制构造函数和复制赋值操作符……非常感谢。有没有一种方法可以让指针绕过它,实际上它包含了一个对象?“Lua:不,但幸运的是,你不需要这样做。@ Lua:一个对象不能包含同一类型的另一个对象的原因是C++中包含一个成员真的包含它的意思。成员占用的内存是包含对象占用的内存的一部分。那么,一旦您添加了一些其他成员数据以指示这是否是行的结尾,您的对象可能会有多大?@aschepler:+1,这正是我在被现实世界中的其他事情分心之前想说的。谢谢你提到这个!从描述来看,它似乎是要创建一个链表。如果你真的不需要对象的链表,你也可以尝试len-As的std::vector。从描述来看,它似乎是要创建一个链表。如果你真的不需要对象的链表,你也可以尝试len-As的std::vector。