Size: a a a

2021 March 03

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Олег
хотелось бы запихнуть в конструктор
Это невозможно
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Serhii Herashchenko
Ну так после конструктора пишешь : left(left), right(right)
Вопрос в другом
источник

SH

Serhii Herashchenko in supapro.cxx
Надо ещё инициализировать перент лефта и Райта
источник

О

Олег in supapro.cxx
Artöm Bakri Al-Sarmini
Это невозможно
рил? ну ок я тоже не вижу
источник

SH

Serhii Herashchenko in supapro.cxx
Artöm Bakri Al-Sarmini
Вопрос в другом
А, понял
источник

AB

Artöm Bakri Al-Sarmi... 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>();
   auto father = make_shared<cluster>(left,right);
   left->father = right->father = father;
   return 0;
}
Оберни это в make_cluster и все
источник

О

Олег in supapro.cxx
в функцию?
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Да
источник

О

Олег in supapro.cxx
это ж костыль не?
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Нет
источник

SH

Serhii Herashchenko 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>();
   auto father = make_shared<cluster>(left,right);
   left->father = right->father = father;
   return 0;
}
Это можно сделать и в конструкторе, но только при условии наследования от std::enabled_shared_from_this
источник

О

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

ID

In Dev in supapro.cxx
Serhii Herashchenko
Это можно сделать и в конструкторе, но только при условии наследования от std::enabled_shared_from_this
Нельзя
источник

SH

Serhii Herashchenko in supapro.cxx
Serhii Herashchenko
Это можно сделать и в конструкторе, но только при условии наследования от std::enabled_shared_from_this
Ну и при гарантии, что объект будет создан через мейк шаред
источник

ID

In Dev in supapro.cxx
Serhii Herashchenko
Ну и при гарантии, что объект будет создан через мейк шаред
Там нет разницы, через что он создан, если я не ошибаюсь
источник

О

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

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Serhii Herashchenko
Это можно сделать и в конструкторе, но только при условии наследования от std::enabled_shared_from_this
Нет. Он хочет доступ к шареду до того, как был вызван ктор этого шареда
источник

SH

Serhii Herashchenko in supapro.cxx
In Dev
Нельзя
А да, нельзя вызывать в конструкторе
источник

SH

Serhii Herashchenko in supapro.cxx
Тогда да, никак
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Serhii Herashchenko
Ну и при гарантии, что объект будет создан через мейк шаред
Что объект менеджится шаредом
источник