【发布时间】:2017-07-24 13:02:00
【问题描述】:
我正在尝试真正从 c++98 迁移到 c++11 及更高版本。我已经了解了大部分新内容,但我仍然不确定unique_ptr 的正确用法。
考虑下面的示例,其中类 A 有一个 unique_ptr 成员(我之前会使用原始指针!)。当用户需要时,应该通过在其他地方(不是类的一部分)调用函数来分配这个成员变量。这是正确的用法吗?如果没有,最好的选择是什么?
class A {
private:
unique_ptr<MyType> mt;
public:
void initStuff() {
mt.reset(std::move(StaticFuncSomewhereElese::generateMyType()));
}
};
MyType* StaticFuncSomewhereElese::generateMyType() {
MyType* temp = new MyType(...);
//do stuff to temp (read file or something...)
return temp;
}
【问题讨论】:
-
那里不需要
std::move,原始指针无法移动。 -
@tuple_cat 但是这个编译和运行完美无缺
-
@SaeidYazdani 不过你不需要它。而是使用
std::make_unique()。 -
@πάνταῥεῖ 那么生成器函数的返回类型是什么?
-
@SaeidYazdani
std::unique_ptr<MyType>.
标签: c++ c++11 c++14 unique-ptr