使用enable_shared_from_this时出现私有基类错误

时间:2017-02-21 02:39:46

标签: c++ c++11 shared-ptr

以下代码无法编译:

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;
};

错误输出:

  

无法将'A'强制转换为其私有基类'const enable_shared_from_this'

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

谁可以给我一些建议?谢谢!

1 个答案:

答案 0 :(得分:2)

更改class的{​​{1}}。 struct默认情况下将继承设为公开:

struct

或者,您也可以指定要公开扩展的类:

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;
};