当需要列表类型的容器时,我一直使用 vector 来存储对象。
我想知道如何将构造函数传递给数组指针。如果对象foo没有构造函数,则以下内容在C++ 03中有效

foo* p = new foo[5]()

现在,如果foo的构造函数需要int怎么办,我如何在上述语句中传递该构造函数?

最佳答案

从C++ 11开始,您可以使用大括号初始化程序:

foo * p = new foo[5] { 1, 2, 3, 4, 5 };   // better: "auto p = ..."

这假定foo可从int隐式构造。

但是您也可以使用容器:
std::vector<foo> v { 1, 2, 3 };
std::list<foo> w { 1, 2, 3 };

也许:
std::unique_ptr<foo[]> q(new foo[4] { 1, 2, 3, 4} );

关于c++ - 将构造函数传递给指针数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16003862/

10-12 07:36
查看更多