Size: a a a

2021 March 03

О

Олег in supapro.cxx
чего
источник

ID

In Dev in supapro.cxx
Олег
ну он автоматом delete
Даже если (бы) так, вы делаете delete нединамического объекта, по вашему это нормально?
источник

О

Олег in supapro.cxx
нет
источник

ID

In Dev in supapro.cxx
Олег
нет
Ну дак не делайте :)
источник

О

Олег in supapro.cxx
а как сделать
источник

IZ

Ilia Zviagin in supapro.cxx
Олег
ну он автоматом delete
Напиши и выполни такой код:
(без shared_ptr, чтобы тебе понятнее и проще было)


struct Foo {};

int main() {
   Foo foo;
   delete &foo;
   return 0;
}

И попробуй выполнить.
источник

О

Олег in supapro.cxx
та я понял
источник

О

Олег in supapro.cxx
left->father = right->father = make_shared<cluster>(left,right);
источник

О

Олег in supapro.cxx
тогда так прийдётся
источник

IZ

Ilia Zviagin in supapro.cxx
Олег
тогда так прийдётся
Нет, не так
источник

О

Олег in supapro.cxx
можно круче?
источник

IZ

Ilia Zviagin in supapro.cxx
Олег
можно круче?
Ты на Яве не писал или на До Диез случайно?
источник

О

Олег in supapro.cxx
не)))))
источник

AS

Anatoly Shirokov in supapro.cxx
Олег
left->father = right->father = make_shared<cluster>(left,right);
Father попреднему weak_ptr?
источник

IZ

Ilia Zviagin in supapro.cxx
Олег
не)))))
А на чём писал?
источник

О

Олег in supapro.cxx
pascal
источник

IZ

Ilia Zviagin in supapro.cxx
Олег
pascal
Значит, и паскаль не знаешь...
источник

О

Олег in supapro.cxx
struct cluster {
   shared_ptr<cluster> left,right;
   weak_ptr<cluster> father;
   cluster(){}
   cluster(shared_ptr<cluster> left,shared_ptr<cluster> right) {
       this->left = left;
       this->right = right;
   }
};
int main() {
   auto left = make_shared<cluster>();
   auto right = make_shared<cluster>();
   left->father = right->father = make_shared<cluster>(left,right);
   return 0;
}
источник

О

Олег in supapro.cxx
вот в чём трабл
источник

ID

In Dev in supapro.cxx
Олег
struct cluster {
   shared_ptr<cluster> left,right;
   weak_ptr<cluster> father;
   cluster(){}
   cluster(shared_ptr<cluster> left,shared_ptr<cluster> right) {
       this->left = left;
       this->right = right;
   }
};
int main() {
   auto left = make_shared<cluster>();
   auto right = make_shared<cluster>();
   left->father = right->father = make_shared<cluster>(left,right);
   return 0;
}
weak_ptr не участвует в подсчете владеющих ссылок
Почитайте что-нибудь про умные указатели
источник