在下面的例子中,我有一个智能指针sp作为成员变量,我想在构造函数中给它分配一个动态分配的数组,但是我得到了一个编译器错误no match for ‘operator=’,那么正确的方法是什么呢?
在下面的例子中,我有一个智能指针sp作为成员变量,我想在构造函数中为它分配一个动态分配的数组,使用智能指针的reset()方法是正确的方法,还是应该使用共享的智能指针?
struct SampleStructure
{
std::unique_ptr<idx_t[]> sp;
SampleStructure(int a, int b){
sp.reset(new idx_t[a + 1]);
}
};发布于 2019-02-22 17:31:31
您不能使用operator=,因为std::unique_ptr不能直接从原始指针assigned,如您所示,您必须使用reset(),它将替换托管对象(在unique_ptr初始化之后)。
您可以通过构造函数中的成员初始化器列表直接初始化数据成员sp;然后您不需要“赋值”(替换)。例如:
SampleStructure(int a, int b) : sp(std::make_unique<idx_t[]>(a + 1)) {}https://stackoverflow.com/questions/54823866
复制相似问题