Вы никогда не должны использовать make_shared или иным образом создавать shared_ptr из этого.
Кроме того, никогда не комбинируйте методы управления памятью, если вы не уверены, что знаете и полностью понимаете, что делаете.
Если вам действительно нужно shared_ptr
, ссылающееся на текущий объект, вы должны вместо этого создать объект как shared_ptr
в первый раз и иметь наследуемый класс enable_shared_from_this .
После этого, когда вам нужен общий указатель, используйте shared_from_this
Поскольку у вас есть это, вы уже сконструировали свой объект, и использование прямого указателя для создания из него другого общего указателя приведет к тому, что ваша ссылка будет уничтожена, как только одна из ваших ссылок shared_ptr достигнет 0, а у другой будет недопустимый ссылка.