我指的是question,我们可以为已删除默认构造函数的类创建一个std::unique_ptr
数组,如下所示,如何传递string
参数。
#include <iostream>
#include <string>
#include <memory>
using namespace std;
class A
{
string str;
public:
A() = delete;
A(string _str): str(_str) {}
string getStr()
{
return str;
}
};
int main()
{
unique_ptr<A[]> ptr = make_unique<A[]>(3);
unique_ptr<A[]> arr[3] = make_unique<A[]>(3);
// Do something here
return 0;
}
答案 0 :(得分:5)
对于智能指针数组:
unique_ptr<A> ptr[3];
for (auto& p : ptr)
p = make_unique<A>("hello");
答案 1 :(得分:1)
make_unique
无法做到这一点。但你可以用这个:
unique_ptr<A[]> ptr(new A[3]{{"A"}, {"B"}, {"C"}});
在C ++ 11之前 - 它非常难(可以通过新的放置等方式完成)。