Так что, если у меня есть следующий класс 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
}
Но почему, если они публичны? Или я что-то не так делаю?
Вы наследуете от Super
в частном порядке. Если вы не упомянули уровень доступа для наследования, это значение по умолчанию для class
es в C ++. Тем не менее, обратите внимание, что struct
по умолчанию установлено public
,
Измените свой код на
class Sub : public Super {
public:
string member2 = "bla bla 2";
};
А потом member
будет видно
Других решений пока нет …