저는 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()'를 사용하십시오. –