2017-02-21 6 views
-2

を使用する場合は、次のコードはコンパイルされません:プライベート基本クラスのエラー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; 
}; 

をエラー出力:

はそのプライベート基本クラスに 'A' をキャストすることはできません 'のconst enable_shared_from_this'

Xcodeバージョンは8.2.1です。Apple LLVMバージョン8.0.0(clang-800.0.42.1)

私にいくつかの示唆を与えることができますか?ありがとう!

+4

は 'public'作りますか? –

+0

はい、それは働いた。 – xuejieNian

答えて

1

classstructに変更します。 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; 
}; 

、あなたはまた、公に拡張するクラスを指定することができます。

class A : public 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; 
}; 
+0

、ありがとう! – xuejieNian

関連する問題