Saat ini saya mencoba mempelajari cara menggunakan petunjuk cerdas. Namun saat melakukan beberapa eksperimen, saya menemukan situasi berikut yang tidak dapat saya temukan solusi yang memuaskan:
Bayangkan Anda memiliki objek kelas A menjadi induk dari objek kelas B (anak), tetapi keduanya harus saling mengenal:
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;
};
Pertanyaannya adalah bagaimana objek kelas A meneruskan a std::shared_ptr
dari dirinya sendiri ( this
) ke anaknya?
Ada solusi untuk Boost shared pointer ( Mendapatkan boost::shared_ptr
untukthis
), tetapi bagaimana menangani ini menggunakan std::
smart pointer?