gpt4 book ai didi

c++ - 通知引用对象在 C++ 中被引用的对象被删除

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

我想请教以下问题:

假设我们在 C++ 中有三个类:A、B 和 C。类 A 的对象正在创建并拥有类 B 的对象。然后它将 B 的引用赋予类 C 的对象以进行存储作为指针变量。那么,如果 A 被删除,通知 C 指向 B 的指针不再有效(并且应该设置为空)的最佳做法是什么?

是否有通用方法或例如特定于 Qt 的方法?

最佳答案

使用std::weak_ptr

示例 ( live demo here )

class A
{
private:
std::shared_ptr<B> myB;

public:
A() :
myB(std::make_shared<B>())
{
}

std::weak_ptr<B> GetB()
{
return myB;
}
};

class B
{
};

class C
{
private:
std::weak_ptr<B> theB;

public:
C(std::weak_ptr<B> b) :
theB(b)
{
}

void test()
{
auto b = theB.lock();
if (b)
{
// theB is still valid
}
else
{
// theB is gone
}
}
};

关于c++ - 通知引用对象在 C++ 中被引用的对象被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32733924/

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