我仍在探索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' –