【发布时间】:2019-03-22 00:41:39
【问题描述】:
所以,我有一个带有构造函数的对象。此对象不支持空构造函数,因为必须在构造函数中分配常量。像这样的:
class Object {
public:
const int foo;
Object(int f) : foo(f) {
// other stuff
}
}
现在我有另一个函数来保存动态分配的对象数组。
Object* objects;
我需要能够使用new[] 和delete[] 分配此内存,但也需要使用构造函数。我似乎无法弄清楚如何做到这一点。
这样的东西会很理想
objects = new Object[numObjects];
for (int i = 0; i < numObjects; ++i) {
object[i](foos[i]);
}
我可以使用malloc 和free,然后使用new 对象,但这并不理想,因为我必须遍历析构函数中的对象并手动销毁它们,然后释放内存.看起来很乱。
【问题讨论】:
-
尝试将常量设为静态。
-
使用
std::vector,您将能够做到这一点。 -
@Gardener 对象之间的常量不同。
-
@Phil1970 我正在努力保持实现紧凑、快速和低内存。
标签: c++ c++11 pointers constructor