Tôi có hai lớp với một mối quan hệ cha-con (khách hàng & nhằm mục & tập tin vv)tăng shared_ptr và 'này'
Tôi có
typedef boost::shared_ptr<Parent> ParentPtr
và trong lớp cha mẹ một phương pháp để thực hiện một con
Tôi cần các phiên bản con để có con trỏ đến cha mẹ của chúng.
class Child
{
....
ParentPtr m_parent;
....
}
Tôi muốn nó là shared_ptr để cha mẹ không biến mất khi có con. Tôi cũng có những người khác giữ ParentPtrs cho phụ huynh (phương pháp nhà máy cho phụ huynh trả về một ParentPtr)
Câu hỏi: làm thế nào có thể cung cấp cho các con một nỗ lực ParentPtr
(1). Trong Parent :: ChildFactory
child->m_parent.reset(this);
kết quả này là những điều rất xấu. Hiện tại có 2 chuỗi 'ParentPtr' trỏ vào phụ huynh; kết quả là cái chết sớm của Parent
cố gắng (2). Cha mẹ có
ParentPtr m_me;
được sao chép từ giá trị trả lại của nhà máy chính. Vì vậy, tôi có thể làm
child->m_parent = m_me;
Nhưng bây giờ Chánh không bao giờ chết vì nó giữ một tham chiếu đến bản thân
câu trả lời hay - cảm ơn – pm100
@ pm100: Tại sao bạn cần sử dụng 'weak_ptr'? Nếu trẻ em sở hữu bố mẹ của chúng (chia sẻ chúng) thì bạn cần sử dụng 'shared_ptr'. 'Weak_ptr' không ngụ ý quyền sở hữu. –
oh vâng bạn đúng - tôi đã nghĩ đến một giải pháp khác - xóa chỉnh sửa – pm100