【问题标题】:private base class error when using enable_shared_from_this使用 enable_shared_from_this 时出现私有基类错误
【发布时间】:2017-02-21 02:39:46
【问题描述】:

以下代码无法编译:

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)

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

【问题讨论】:

  • 让它public?

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


【解决方案1】:

class 更改为structstruct 默认公开继承:

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

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多