我在c ++中工作的课程如下:
class foo {
int a ;
foo (){
a = rand();
}
foo(int b){ a=b }
};
int main(){
foo * array = new foo[10]; //i want to call constructor foo(int b)
// foo * array = new foo(4)[10]; ????
}
请帮助,谢谢:D
答案 0 :(得分:1)
首先应该更正语法(放置;
,使构造函数public
等)。然后,您可以在C ++ 11中使用统一初始化,如
#include <iostream>
class foo {
public:
int a;
foo () {
}
foo(int b) { a = b; }
};
int main()
{
foo * array = new foo[10] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::cout << array[2].a << std::endl; // ok, displays 2
delete[] array;
}
您应该尝试完全避免使用原始数组,使用std::vector
(或std::array
)或任何其他标准容器。例如:
std::vector<foo> v{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
或
std::vector v(10, 4); // 10 elements, all initialized with 4
无需记住删除内存等。