gpt4 book ai didi

c++ - 取消引用指向不再存在的框架的指针

转载 作者:行者123 更新时间:2023-11-30 01:48:35 26 4
gpt4 key购买 nike

我有 MessagesViewer 框架,我想控制其唯一性,

使用这段代码:

MessagesViewer* m_pMsgViewer = NULL;

void Application::ShowMessagesViewer()
{
if (m_pMsgViewer == NULL)
{
m_pMsgViewer = new MessagesViewer(
wxGetApp().GetContainer()->GetAppData()->GetMessages()
);
}
else
{
m_pMsgViewer->FillPage(wxGetApp().GetContainer()->GetAppData()->GetMessages());
m_pMsgViewer->SetFocus();
}
}

但是当我第一次调用它时,m_pMsgViewer 开始引用内存中的有效数据。当我关闭 MessagesViewer 框架时,它会自动销毁它,但指针仍引用旧地址,我无法控制从该客户端代码销毁框架。

我如何取消引用指向已销毁框架的指针?

最佳答案

@bogdan 已经提出了一个很好的解决方案,但还有另一个更自动的解决方案:将帧指针存储在 wxWeakRef<> 中。反而。 IE。保持与现在完全相同的代码,但将声明替换为

wxWeakRef<MessagesViewer> m_pMsgViewer;

当窗口被销毁时,弱引用将自动重置为NULL

关于c++ - 取消引用指向不再存在的框架的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30295903/

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