我想问以下问题:
假设我们在C ++中有三个类:A,B和C.类A的对象是创建和拥有类B的对象。然后将B的引用提供给要存储的类C的对象作为指针变量。那么,如果A被删除,告诉C的最佳做法是什么,指向B的指针不再有效(并且应该设置为null)?
是否有一般方法或例如特定于Qt的方法?
答案 0 :(得分:3)
示例(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
}
}
};