作者:weizhe | 来源:互联网 | 2023-09-25 15:57
我在使用 unique_ptr 创建对象时出错,如下所示错误:从 Account * 到非标量类型 std::unique_ptr 的错误转换
std::unique_ptr acc_ptr = new Account(100);
如果我使用如下原始指针,则没有错误
Account *acc_ptr = new Account(100);
为什么会这样?
回答
std::unique_ptr
带指针的构造函数是explicit
。
你需要这个:
std::unique_ptr acc_ptr(new Account(100));
或者,从 C++14 开始,使用更好的std::make_unique
版本:
auto acc_ptr = std::make_unique(100);