저는 현재 스마트 포인터 사용법을 배우려고합니다. 그러나 몇 가지 실험을 수행하는 동안 포화 솔루션을 찾을 수없는 다음 상황을 발견했습니다.
클래스 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
자신의 ( this
)를 자식에게 전달할 수 있습니까?
Boost 공유 포인터 ( Getting a boost::shared_ptr
forthis
)에 대한 솔루션 이 있지만 std::
스마트 포인터를 사용하여이를 처리하는 방법은 무엇입니까?