我想用unique_ptr<NativeWindow>
存儲一個指向我的本地窗口實例的指針,這樣當Window
對象超出範圍時,它將保證被釋放。如何在C++'11中更改指針的所有權?
// This would be maintained by a window manager
unique_ptr<Window> window;
void Foo() {
NativeWindow *pNativeWindow = createNativeWindow();
window = new Window(pNativeWindow);
}
// ...
class Window {
private:
unique_ptr<NativeWindow> _nativeWindow;
public:
inline NativeWindow& GetNativeWindow() {
return *_nativeWindow;
}
// ...
Window::Window(NativeWindow&& nativeWindow)
: _nativeWindow(std::move(nativeWindow))
{
}
我很難理解移動語義,並且會發現從這個例子中學習更容易。如果這是香草指針,我會很好,但我試圖理解新的方式!
'unique_ptr second = first;' –
2013-07-09 16:44:01
這裏沒有問題。 – Casey
對不起,我應該已經更具體,我收到以上錯誤消息與上面的代碼: '錯誤1錯誤C2664:'std :: unique_ptr <_Ty> :: unique_ptr(std :: nullptr_t)throw()':can not將參數1從「NativeWindow」轉換爲「std :: nullptr_t'' –