有人可以解釋爲什麼以下崩潰?我正在使用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'之前,應該有至少一個'的std :: shared_ptr的 p'擁有'* this'。」 - [來源](http://en.cppreference.com/w/cpp/memory/enable_shared_from_this/shared_from_this) –
clcto
2014-09-02 17:08:32
@clcto,我認爲你的評論值得提升爲答案。 – 2014-09-02 17:17:47