Умный указатель и this

Есть класс, наследуемый от std::enablee_shared_from_this. В этом классе содержится другой объект, у которого нужно вызвать метод, в который в свою очередь нужно передать умный указатель на объект исходного класса. Использовать

std::shared_ptr<Unit> unit(this);

нельзя, так как указатели не будут знать о существовании друг друга. Поэтому, логичным решением мне показалось использовать

void Unit::performAttack() {
    attackBehavior->attack(shared_from_this());
}

(Unit - исходный класс, из которого вызывается метод attack объекта attackBehavior). Но это влечет за собой ошибку при выполнении: "Возникло необработанное исключение по адресу... исключение Microsoft C++: std::bad_weak_ptr...". В чем ошибка и как можно это исправть?


Ответы (0 шт):