在方法中删除对自身的唯一shared_ptr引用是否安全?像下面这样的东西。如果两个对象(A类和B类中的另一个)通过pB_
和pA_
指向对方。假设pB_
是对B类对象的唯一引用。然后我在类A::method()
的对象上调用A
。会有问题吗?
#include <iostream>
using std::shared_ptr
class B;
class A {
public:
void method() {
pB_->method();
}
shared_ptr<B> pB_;
};
class B {
public:
void method() {
pA_->pB_.reset();
// Is this OK? And is it safe if I don't do this?
some_other_data_ = 10;
}
shared_ptr<A> pA_;
int some_other_data_;
};