< 返回版块

sstudioer 发表于 2021-03-12 00:37

int main() {
	{
		auto a = std::make_shared<A>();
		auto b = std::make_shared<B>();
		a->b = b;
		b->a = a;
		a->b.lock()->name = 100;
		std::cout << a->b.lock()->name;
	}
}

评论区

写评论
johnmave126 2021-03-12 02:23

Weak::new()是拿来占位的,所以可以直接把

a.borrow_mut().b.upgrade().replace(b.clone());

替换成

a.borrow_mut().b = Rc::downgrade(&b);

就行了

1 共 1 条评论, 1 页