我仍在探索C++ 11.所以我很確定我做錯了什麼。但我無法弄清楚問題所在。將auto_ptr分配給weak_ptr
我有以下代碼:
MyClass::MyClass(const PlayerEventListener* eventListener)
{
weak_ptr<PlayerEventListener> _listener;
std::auto_ptr<PlayerEventListener> autoPtr;
autoPtr.reset(const_cast<PlayerEventListener*> (eventListener));
// I get error for this line
_listener = autoPtr;
}
我得到以下錯誤:沒有可行的重載 '='
但下面的代碼編譯罰款:
MyClass::MyClass(const PlayerEventListener* eventListener)
{
weak_ptr<PlayerEventListener> _listener;
std::shared_ptr<PlayerEventListener> sharedPtr;
sharedPtr.reset(const_cast<PlayerEventListener*> (eventListener));
// I get error for this line
_listener = sharedPtr;
}
有人可以解釋爲什麼我無法將自動指針轉換爲弱指針?
'auto_ptr'沒有引用計數器,一個'weak_ptr'會被觀察到 –
在std :: auto_ptr在C++ 11中被棄用,基本上是一個'std :: unique_ptr',你不能複製一個unique_ptr。 –
「我很確定我做錯了什麼」 - 是的,您正在使用'auto_ptr' –