创建一个没有默认构造函数的类的智能指针数组

时间:2017-02-22 10:04:56

标签: c++ visual-c++ c++14

我指的是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;
}

2 个答案:

答案 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之前 - 它非常难(可以通过新的放置等方式完成)。