我希望能够从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
,因为裸指针无法移动。 - emlaistd::make_unique()
。 - πάντα ῥεῖstd::unique_ptr<MyType>
。 - πάντα ῥεῖ