Не удается получить доступ к открытым членам суперкласса с переменной подкласса

Так что, если у меня есть следующий класс Super:

class Super {
public:
string member = "bla bla";
void doSth() { cout << member; }
};

И класс Sub, который наследует Super:

class Sub : Super {
public:
string member2 = "bla bla 2";
};

Тогда, когда у меня есть Sub-объект, я не могу связаться с членами Super, даже если они публичны.

using namespace std;
int main(){
Sub sub;
cout << sub.member2 << endl;
cout << sub.member << endl; // error: public Super::member is inaccessible
sub.doSth(); // error: public Super::doSth() is inaccessible
}

Но почему, если они публичны? Или я что-то не так делаю?

0

Решение

Вы наследуете от Super в частном порядке. Если вы не упомянули уровень доступа для наследования, это значение по умолчанию для classes в C ++. Тем не менее, обратите внимание, что structпо умолчанию установлено public,

Измените свой код на

class Sub : public Super {
public:
string member2 = "bla bla 2";
};

А потом member будет видно

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]