【发布时间】:2016-04-30 10:23:16
【问题描述】:
我正在尝试使用具有 unique_ptr 的数组,但没有成功。
声明某个大小的 unique_ptr 的正确方法是什么?
(大小是一些参数)。
unique_ptr<A[]> ptr = make_unique<A[]>(size);
这是一个例子:
#include <iostream>
#include <string>
#include <vector>
#include <functional>
#include <memory>
using namespace std;
class A {
string str;
public:
A(string _str): str(_str) {}
string getStr() {
return str;
}
};
int main()
{
unique_ptr<A[]> ptr = make_unique<A[]>(3);
}
这不起作用,但是,如果我删除 A 的构造函数,它会起作用。
我希望 3 代表数组的大小,而不是 A 的构造函数的参数,我该如何实现?
【问题讨论】:
-
提示:使用 4 个空格缩进将文本标记为代码
-
为什么不使用
std::unique_ptr<std::vector<A>> ptr = make_unique<std::vector<A>>(3);? -
或者
std::unique_ptr<std::array<A,3>> ptr = make_unique<std::array<A,3>>(); -
@πάνταῥεῖ,这太过分了! [使用手榴弹杀死蚂蚁] :-)。任何一种解决方案都需要使用默认构造函数。他只需要提供一个,代码就可以了
-
@WhiZTiM 是的,我已经看到你的答案了。
标签: c++ arrays pointers unique-ptr