gpt4 book ai didi

带有 unique_ptr 的 C++ 堆栈

转载 作者:太空狗 更新时间:2023-10-29 23:43:29 25 4
gpt4 key购买 nike

我有一个遗留程序,它使用 std::stack 对象来存储一些指针。

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* getLastWidget()
{
if(!widgetStack.isEmpty())
{
return widgetStack.top().get();
}
return nullptr;
}

关于带有 unique_ptr 的 C++ 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49935075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com