У меня есть вопрос. Я играл с enable_shared_from_this
и заметил странную вещь. Этот пример работает отлично:Класс vs struct с 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: error: ‘std::enable_shared_from_this’ is an inaccessible base of ‘Test’ __enable_shared_from_this_helper(_M_refcount, __p, __p);
Кто-нибудь есть ключ, почему это так?
По умолчанию наследование 'struct' является' public' тогда как для 'class', это' private' наследство. – dyp
Справа. Наследование по умолчанию - это ответ. Спасибо! – Jack