Не работает код, что делать? c++

#include<iostream>
#include<cstdlib>
using namespace std;
class A {
  int x;
  public: 
    void setx(int a){
       x=a;
    }
    int getx(){
       return x;
    }
};
class B: protected A {
  int y;
  public: 
    void sety(int b){
      y=b;
    }
    void setx(int a){
       A::setx(a);
    }
    int gety(){
       return y;
    }
};
class C: protected B {
  int z;
  public: 
    void setz(int c){
       z=c;
    }
    int getz(){
       return z;
       }
};

int main(){
  A a; 
  B b; 
  C c;
  a.setx(1);
  b.setx(2); b.sety(2);
  c.setx(3); c.sety(3); c.setz(3);
  cout<<a.getx()<<b.getx()<<c.getx()<<'\n';
  return 0;
}

Хочу поработать с классами, но не работает почему-то код, что-то. наверное. пропустил.


Ответы (1 шт):

Автор решения: KoVadim

При protected наследовании сам класс имеет доступ к своему предку, а вот пользователи этого класса - нет. Поэтому, в коде main и нет доступа к setx. Измените на public и все заработает.

→ Ссылка