gpt4 book ai didi

c++ - 气候依赖和共享指针和弱指针

转载 作者:行者123 更新时间:2023-11-28 05:38:47 24 4
gpt4 key购买 nike

我有以下场景:

enter image description here

但是,我遇到了一些内存问题,因为我的 Dispatcher 似乎在发送到 Window 之前就被删除了。

伪代码看起来像这样:

class Kernel
{
shared_ptr<Window> window;
shared_ptr<Dispatcher> dispatcher;
}

class Window
{
weak_ptr<Dispatcher> dispatcher;
}

class Dispatcher
{}

如何正确使用智能指针来解决这个问题?

最佳答案

我写了例子 http://cpp.sh/8dkv7

如您所见,您的代码是正确的:

  #include <iostream>
#include <memory>

class Dispatcher;
class Window;

class Kernel
{
public:
std::shared_ptr<Window> window;
std::shared_ptr<Dispatcher> dispatcher;
};

class Window
{
public:
std::weak_ptr<Dispatcher> dispatcher;
};

class Dispatcher
{
};

int main()
{
Kernel k;
k.window = std::make_shared<Window>();
k.dispatcher = std::make_shared<Dispatcher>();
k.window->dispatcher = k.dispatcher;
if( auto dispatcher = k.window->dispatcher.lock() ) {
std::cout << "ok\n"; // i see ok, what about you?
}
}

关于c++ - 气候依赖和共享指针和弱指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37629100/

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