C++将对象添加到数组

Lou*_*uis 0 c++ arrays stack

我需要实例化一个对象并将其添加到数组中.这是我目前在一个方法中所拥有的:

Row r;
rows[count] = r;
Run Code Online (Sandbox Code Playgroud)

这里的问题r是在堆栈上并在函数退出后被删除.我快速解决的问题是制作r静态,但那是不对的?我该怎么办?(对不起,完整的C++ noob).

编辑:删除Row的解构函数可以解决问题.

Ste*_*sop 7

该行将对象rows[count] = r 复制rcount数组中索引处的元素.在那之后,无论发生什么都没关系r,阵列不受影响.

[编辑:好的,间接发生的事情很重要r- 因为副本使用的东西r可以删除.]

如果您习惯于(例如)Java,其中数组元素实际上不是对象,那么这只是对它的引用,这是令人惊讶的.

  • @Louis如果你的类有一个非平凡的析构函数,它*必须*也实现一个复制构造函数和赋值运算符才能正常运行.这被称为"三个规则"(参见:http://www.drdobbs.com/cpp/184401400)并且它的存在恰恰是为了避免这样的问题. (3认同)
  • 什么不起作用?类'Row`是否在析构函数中释放了任何东西,如果是这样,它是否有一个`operator =`来复制它的任何东西? (2认同)