使用 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
更改为 struct
。 struct
默认继承 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;
};
以下代码无法编译:
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
更改为 struct
。 struct
默认继承 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;
};