Ссылки
- cppreference: enable_shared_from_this
- stackoverflow: Does a new shared_ptr know to take shared_from_this()?
Если при вызове shared_from_this() генерируется исключение std::bad_weak_ptr, это означает, что еще не существует ни одного std::shared_ptr, ссылающегося на объект. См. Notes.
Неправильно:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <memory> struct Class : std::enable_shared_from_this<Class> {}; int main() { Class *c = new Class; c->shared_from_this(); return 0; } |
terminate called after throwing an instance of 'std::bad_weak_ptr' what(): std::bad_weak_ptr
Правильно:
#include <memory> struct Class : std::enable_shared_from_this<Class> {}; int main() { Class *c = new Class; std::shared_ptr<Class> sc(c); c->shared_from_this(); return 0; }
Комментариев нет:
Отправить комментарий