2

質問があります。と遊んでいてenable_shared_from_this、奇妙なことに気づきました。この例は正常に動作します:

#include <iostream>
#include <memory>
using namespace std;

struct Test : enable_shared_from_this<Test>
{
};

int main() {
    shared_ptr<Test> ptr(new Test);
    return 0;
}

しかし、変更structするclassとコンパイルが停止します。

エラーは言う:

/usr/include/c++/4.8/bits/shared_ptr_base.h:772:58: エラー:
'std::enable_shared_from_this' は 'Test' のアクセスできないベースです
    __enable_shared_from_this_helper(_M_refcount, __p, __p);

なぜそうなのか、誰にも手がかりがありますか?

4

2 に答える 2