在很多情况下,我们会在基类中继承 std::enable_shared_from_this 来使得在该类的方法中能够使用 shared_ptr 托管的 this 指针。例如:
class Base : public std::enable_shared_from_this<Base>
{
public:
Base() { /* ... */ }
~Base() { }
void method()
{
// ...
// 传递该类shared_ptr托管的this指针
function1(shared_from_this());
}
// ...
private:
// ...
};
void function1(std::shared_ptr<Base> derived)
{
// ...
}
但如果在子类中使用 shared_from_this() 函数,就会发生错误。例如:
class Derived : public Base
{
public:
Derived() { /* ... */ }
~Deried() { }
void method(std::shared_ptr<Derived> deri