Зараз я намагаюся навчитися користуватися розумними вказівниками. Однак, проводячи деякі експерименти, я виявив наступну ситуацію, для якої не міг знайти насичуючого рішення:
Уявіть, у вас є об'єкт класу A, який є батьком об'єкта класу B (дочірній), але обидва повинні знати один одного:
class A;
class B;
class A
{
public:
void addChild(std::shared_ptr<B> child)
{
children->push_back(child);
// How to do pass the pointer correctly?
// child->setParent(this); // wrong
// ^^^^
}
private:
std::list<std::shared_ptr<B>> children;
};
class B
{
public:
setParent(std::shared_ptr<A> parent)
{
this->parent = parent;
};
private:
std::shared_ptr<A> parent;
};
Питання в тому, як об’єкт класу A може передати std::shared_ptr
aself ( this
) своїй дочірній організації?
Є рішення для Boost спільних покажчиків ( Отримання boost::shared_ptr
forthis
), але як з цим впоратися за допомогою std::
розумних покажчиків?