【发布时间】:2011-04-12 10:31:48
【问题描述】:
我需要实例化一个对象并将其添加到数组中。这是我目前拥有的一种方法:
Row r;
rows[count] = r;
这里的问题是r 在堆栈上并在函数退出后被删除。我的快速解决方法是使r 静态,但这很糟糕,对吧?我该怎么办? (对不起,完整的 C++ 菜鸟)。
编辑:删除 Row 的解构器可以解决问题。
【问题讨论】:
-
你的班级有新的/删除的吗?
-
Row 的解构器删除了数组,这就是导致问题的原因。尝试向已释放的数组中添加内容。
-
能否请您描述一下问题的症状?您可能误诊了其原因。 (这用 C++ 很容易做到!)
-
“编辑:删除 Row 的解构器解决了这个问题。” - 不,它不能解决问题,它只是让它以不同的方式被破坏。那个析构函数的存在是有原因的,对吧?防止内存泄漏。如果您想编写 C++,您真的非常需要阅读 C++ 教程。这不是一种靠猜测就能猜对的语言。
-
@Steve Jessop,同意了。 @Louis 特别需要加强复制构造和分配。