Это хорошая идея иметь такой код: Любые подводные камни? Это лучший дизайн, чтобы использовать общий указатель?Пропустить слабый этот указатель к своей собственной функции
class X {
public:
void foo();
void bar2(const boost::weak_ptr<X>& x);
};
void X::foo() {}
void X::bar2(const boost::weak_ptr<X>& x) {}
void foo()
{
const boost::shared_ptr<X> x = boost::make_shared<X>();
boost::weak_ptr<X> weakX(x);
x->bar2(weakX);
}
int
main()
{
foo();
return 0;
}
Код верный (возможно, проблемы с дизайном, не обнаружены) –
Очевидным недостатком является то, что этот указатель является обычным указателем, поэтому вы можете столкнуться с ситуацией, когда объект уничтожается при выполнении функции-члена, береги себя. Вы можете посмотреть std ::/boost :: enable_shared_from_this. Те же подводные камни. –