Şu anda akıllı işaretçilerin nasıl kullanılacağını öğrenmeye çalışıyorum. Ancak bazı deneyler yaparken doyurucu bir çözüm bulamadığım şu durumu keşfettim:
B sınıfından bir nesnenin (çocuk) ebeveyni olan A sınıfı bir nesneniz olduğunu düşünün, ancak her ikisi de birbirini tanımalıdır:
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;
};
Soru, A sınıfının bir nesnesinin std::shared_ptr
kendisinden a'yı ( this
) çocuğuna nasıl geçirebileceğidir ?
Orada (Boost paylaşılan işaretçileri için çözümleridir bir Başlarken boost::shared_ptr
içinthis
), ancak bu nasıl kullanarak işlemek için std::
akıllı işaretçiler?