Умный указатель и 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...". В чем ошибка и как можно это исправть?