내가 부모 - 자식 관계를 가진 두 개의 클래스를 (등 고객 & 위해 디렉토리 & 파일)부스트 shared_ptr의와 '이'
나는
typedef boost::shared_ptr<Parent> ParentPtr
및 부모 클래스의를 만들 수있는 방법이 자식
부모 인스턴스에 대한 포인터를 가질 자식 인스턴스가 필요합니다.
class Child
{
....
ParentPtr m_parent;
....
}
나는 기존의 어린이가있는 동안 부모가 사라지지 않도록 그것이 shared_ptr을 원한다. 또한 부모 (부모의 공장 출하 방법은 ParentPtr을 반환)에 ParentPtrs을 잡고 다른 사람이
질문 : 아이에게 ParentPtr
시도를 줄 수있는 방법 (1). 부모 :: ChildFactory에서
child->m_parent.reset(this);
이것은 매우 나쁜 결과를 초래합니다. 이제 부모를 가리키는 2 개의 ParentPtr '체인'이 있습니다. 결과는 부모의 조기 사망이다.
시도 (2). 부모가
ParentPtr m_me;
이며 부모 팩토리의 반환 값에서 복사됩니다. 그것이 내가 enable_shared_from_this
이 문제를 해결하는 것이 매우 확신 자체
감사합니다. 감사합니다. – pm100
@ pm100 : 왜 'weak_ptr'을 사용해야합니까? 자녀가 부모를 소유하고 있다면 (그들과 공유), 당신은'shared_ptr'을 사용할 필요가 있습니다. 'weak_ptr '은 소유권을 의미하지 않습니다. –
아, 네가 맞아 - 내가 다른 해결책을 생각하고있어 - 편집을 취소했다 – pm100