使用new在C ++中使用重载的构造函数分配一个类元素数组

时间:2010-06-11 04:50:55

标签: c++ constructor new-operator

作为一个例子说我有一个没有默认构造函数但没有默认构造函数的类foo

foo:foo(int _varA,int _varB)
{
   m_VarA = _varA;
   m_VarB = _varB;
}

我如何分配这些数组。

我似乎记得尝试这样的事情失败了。

foo* MyArray = new foo[100](25,14).

我认为这也无效。

foo* MyArray = new foo[100](25,14)

可以这样做吗?我通常通过使用_varA和_varB的一些预设值来编写默认构造函数来完成此操作。然后添加一个函数来为每个元素重置_varA和_varB,但这不适用于这种情况。

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

您的首选应该是忽略new[]甚至存在的事实,而是使用std::vector代替:

std::vector<foo> MyArray(100, foo(25,14));

答案 1 :(得分:2)

如果要能够分配类的数组(直接使用new[]),则该类必须具有默认构造函数。没有默认构造函数,没有动态数组。