我有一个遗留的程序,它使用std::stack对象来存储一些指针。
现在我想将这个代码更改为新的C++11风格。
std::stack<Widget*> widgetStack;
现在我想将这个代码更改为新的C++11风格。
std::stack<std::unique_ptr<Widget>> widgetStack;
然而在代码中有一个函数:
Widget* getLastWidget()
{
if(!widgetStack.isEmpty())
{
return widgetStack.top();
}
return null;
}
我正在努力让这个函数与unique_ptr一起工作。栈是小部件的所有者,只有在弹出栈时,Widget对象才应该被销毁。您有什么关于如何解决这个问题的想法吗?
.get()
方法。 - Passer Bystd::shared_ptr
或std::weak_ptr
。你正在使用错误的工具... - user202729std::unique_ptr<Widget>&
。 - Yksisarvinen.get()
是一个不错的选择。 - Ben Voigt