Сообщение Re: Порядок создания и удаления в графе от 30.12.2019 6:58
Изменено 30.12.2019 7:55 RedApe
Re: Порядок создания и удаления в графе
Здравствуйте, SuhanovSergey, Вы писали:
SS>
Т.е. типа указатель на C должен быть и у А, и у B, но удаляться он должен только после того, как удалён А?
Ну тогда, наверное, разделить стоит передачу указателей и передачу владения.
Может быть, какой-нибудь set_parent сделать, по аналогии с QObject::SetParent из Qt.
И работать не с unique_ptr, а с голыми указателями.
[ccode]
auto c = new C;
auto b = new B(c);
auto a = new A(b,c);
b->set_parent(a);
c->set_parent(a);
[ccode]
А если хочется автоматизма, то колдовать придётся в конструкторах.
SS>
SS>auto c = make_unique<C>();
SS>auto b = make_unique<B>(c.get());
SS>auto a = make_unique<A>(move(b), move(c));
SS>
Т.е. типа указатель на C должен быть и у А, и у B, но удаляться он должен только после того, как удалён А?
Ну тогда, наверное, разделить стоит передачу указателей и передачу владения.
Может быть, какой-нибудь set_parent сделать, по аналогии с QObject::SetParent из Qt.
И работать не с unique_ptr, а с голыми указателями.
[ccode]
auto c = new C;
auto b = new B(c);
auto a = new A(b,c);
b->set_parent(a);
c->set_parent(a);
[ccode]
А если хочется автоматизма, то колдовать придётся в конструкторах.
Re: Порядок создания и удаления в графе
Здравствуйте, SuhanovSergey, Вы писали:
SS>
Т.е. типа указатель на C должен быть и у А, и у B, но удаляться он должен только после того, как удалён А?
Ну тогда, наверное, разделить стоит передачу указателей и передачу владения.
Может быть, какой-нибудь set_parent сделать, по аналогии с QObject::SetParent из Qt.
И работать не с unique_ptr, а с голыми указателями.
А если хочется автоматизма, то колдовать придётся в конструкторах.
SS>
SS>auto c = make_unique<C>();
SS>auto b = make_unique<B>(c.get());
SS>auto a = make_unique<A>(move(b), move(c));
SS>
Т.е. типа указатель на C должен быть и у А, и у B, но удаляться он должен только после того, как удалён А?
Ну тогда, наверное, разделить стоит передачу указателей и передачу владения.
Может быть, какой-нибудь set_parent сделать, по аналогии с QObject::SetParent из Qt.
И работать не с unique_ptr, а с голыми указателями.
auto c = new C;
auto b = new B(c);
auto a = new A(b,c);
b->set_parent(a);
c->set_parent(a);
А если хочется автоматизма, то колдовать придётся в конструкторах.