Может кто-нибудь объяснить, почему следующие сбои? Я использую enable_shared_from_this, чтобы bob не удалялся.enable_shared_from_this. Почему крушение?
class Person : public std::enable_shared_from_this<Person> {
private:
std::string name;
public:
Person (const std::string& name) : name(name) {}
std::string getName() const {return name;}
void introduce() const;
};
void displayName (std::shared_ptr<const Person> person) {
std::cout << "Name is " << person->getName() << "." << std::endl;
}
void Person::introduce() const {
displayName (this->shared_from_this());
}
int main() {
Person* bob = new Person ("Bob");
bob->introduce(); // Crash here. Why?
}
"Перед вызовом' shared_from_this', должно быть по крайней мере один 'станд :: shared_ptr p', который владеет' * this'." - [источник] (http://en.cppreference.com/w/cpp/memory/enable_shared_from_this/shared_from_this) –
clcto
@clcto, я думаю, что ваш комментарий заслуживает того, чтобы его отвели. –