gpt4 book ai didi

c++ - 不调用带有 shared_from_this 的相互递归类的析构函数

转载 作者:搜寻专家 更新时间:2023-10-31 00:10:36 29 4
gpt4 key购买 nike

<分区>

我有两个类,A 和 B,它们有一个指向彼此的 shared_ptr(A 有一个指向 B 的 shared_ptr,B 有一个指向 A 的 shared_ptr)。

我试图在超出范围时调用两个类的析构函数,但它不起作用。没有析构函数被调用。

这是一个示例代码:

class B;

class A
{
public:
A() { std::cout << "Constructor A" << std::endl; }
~A() { std::cout << "Destructor A" << std::endl; }

std::shared_ptr<B> b;
};

class B
{
public:
B() { std::cout << "Constructor B" << std::endl; }
~B() { std::cout << "Destructor B" << std::endl; }

std::shared_ptr<A> a;
};

int main()
{
std::shared_ptr<A> a = std::make_shared<A>();
a->b = std::make_shared<B>();

a->b->a = a;
}

我该如何解决这个问题?

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