Наследование: вызов членов и методов базового класса - PullRequest
0 голосов
/ 13 января 2020

Я начал понимать концепцию наследования в c ++. У нас есть этот оператор:

Производный класс наследует члены и методы базового класса.

Итак, я запускаю следующий пример, чтобы применить приведенный выше оператор:

    class A {
    public:
        int a;

        A(int val){a=val;}

        void afficher(){  cout << a <<endl; }

    };

    class B : A {
    public:
        B(int val) : A(val){};
    };

    int main(){
        A a(5);
        a.afficher();

        B b(6);
        b.a = 4;
        b.afficher();
        return 0;
    }

Я получил следующие ошибки при вызове члена a и метода afficher() экземпляром b, который противоречит утверждению:

error: 'int A::a' is inaccessible

error: 'void A::afficher()' is inaccessible

Мой вопрос: как вызывать члены и методы базового класса производным экземпляром?

1 Ответ

1 голос
/ 13 января 2020

Как и для членов, доступность баз по умолчанию для типа, объявленного с ключевым словом class, равна private. Поэтому ваш B наследует все от A как частные члены, отсюда и эти ошибки.

Измените его на class B: public A.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...