gpt4 book ai didi

c++ - 如何在 C++ 中维护指向父对象的弱指针?

转载 作者:搜寻专家 更新时间:2023-10-30 23:50:48 24 4
gpt4 key购买 nike

在 C++ 的子对象中是否有一种标准方法来维护指向父对象(使用共享指针创建)的弱指针?

本质上,我需要按照以下几行来实现一些东西:

Class B;

Class A
{

...
private:
B m_b;
};

Class B
{
....
public:
void SetParentPtr(const boost::shared_ptr<A>& a)
{
m_parentPtr = a;
}
private:
boost::weak_ptr<A> m_parentPtr;
};

在上面,B 类的所有实例都需要持有一个指向其父类(即 A 类的对象)的弱指针。 A 类对象使用 shared_ptr 实例化。我可以想到一个使用空删除器的解决方案。但这是执行此类操作的标准方法吗?

最佳答案

weak_ptrshared_ptr 明确支持你上面所做的,当你尝试时会发生什么?更准确地说,做你正在做的事情,没有空删除器,然后你使用 weak_ptr 上的标准行为根据需要将它转换为 shared_ptr:

boost::shared_ptr<X> it=myWeakPtr.lock();
if (it)
{
// if the conversion succeeded, then the parent instance is still alive
}

关于c++ - 如何在 C++ 中维护指向父对象的弱指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056254/

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