我想要真正從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()'。 –