使用 enable_shared_from_this 时出现私人基地 class 错误

private base class error when using enable_shared_from_this

以下代码无法编译:

class A : B, std::enable_shared_from_this<A>
{
public:
    A();
    virtual ~A();
public:
    void initStr(std::string str=""){m_STR = str;};
private:
    std::string m_STR;
};

错误输出:

Cannot cast 'A' to its private base class 'const enable_shared_from_this'

Xcode 版本是 8.2.1 Apple LLVM 版本 8.0.0 (clang-800.0.42.1)

谁能给我一些建议?谢谢!

class 更改为 structstruct 默认继承 public:

struct A : B, std::enable_shared_from_this<A> {
    A();
    virtual ~A();

    void initStr(std::string str = {}) { m_STR = str; }

private:
    std::string m_STR;
};

或者,您也可以指定一个 class 来扩展 publicly:

class A : B, public std::enable_shared_from_this<A>
{
public:
    A();
    virtual ~A();
public:
    void initStr(std::string str=""){m_STR = str;};
private:
    std::string m_STR;
};