我想要真正从C++ 98移到C++ 11和更新的版本。我已将大部分新东西包裹起来,但我仍不确定unique_ptr
的正确用法。在类成员中正确使用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'那里,原始指针不能被移动。 – emlai
@tuple_cat但是,这编译和运行完美 –
@SaeidYazdani虽然你不需要它。而是使用'std :: make_unique()'。 –