title: C++ inheritance: protected variables not available
body: <p>I've got the following C++ code in XCode, giving two errors I cannot make sense of:</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  
  class Buch{
  public:
      Buch (long int nummer = 0, char autor[25] = (char*)"", int jahr = 0, bool ausgel = false);
  
      long int getNr();
      int getJahr();
  
  protected:
      long int __nummer;
      char     __autor[25];
      int      __jahr;
      bool     __ausgel;
  
      void setAusl(bool x);
      bool getAusl();
  };
  
  class FachBuch : Buch {
  public:
      void setSWort(int sw);
      int getSWort();
  
  protected:
      char     __fach[15];
      int      __swort;
  };
  
  class UBuch : Buch {
  public:
      void setAlter(int a);
      int getAlter();
  
  protected:
      int      __kateg;
      char     __land[15];
  
  private:
      int _ab_alter;
  };
  
  class Bildband : UBuch {
  public:
      Bildband(long int nummer = 0, char autor[25] = (char*)"", int jahr = 0, int kategorie = 0, char land[15] = (char*)"");
  };
  
  Buch::Buch (long int nummer, char autor[25], int jahr, bool ausgel) {
      __nummer = nummer;
      //_autor = autor;
      __jahr = jahr;
      __ausgel = ausgel;
  }
  
  long int Buch::getNr() {
      return __nummer;
  }
  
  int Buch::getJahr() {
      return __jahr;
  }
  
  void Buch::setAusl(bool x) {
      __ausgel = x;
  }
  
  bool Buch::getAusl() {
      return __ausgel;
  }
  
  
  void FachBuch::setSWort(int x) {
      __swort = x;
  }
  
  int FachBuch::getSWort() {
      return __swort;
  }
  
  
  void UBuch::setAlter(int x) {
      _ab_alter = x;
  }
  
  int UBuch::getAlter() {
      return _ab_alter;
  }
  
  Bildband::Bildband(long int nummer, char autor[25], int jahr, int kategorie, char land[15]) {
  
      __nummer = nummer; // error message: Cannot cast 'Bildband' to its private base class 'Buch'
  
      //Buch(nummer, autor, jahr, false); // error message: '__nummer' is a private member of 'Buch'
  
  }
  
  int main () {
      Bildband Masuren(356780, (char*)"Kranz", 2010, 4, (char*)"Polen");
      return 0;
  }
  </code></pre>
  
  <p>I get the following errors:
  main.cpp:92:5: Cannot cast 'Bildband' to its private base class 'Buch'
  main.cpp:92:5: '__nummer' is a private member of 'Buch'</p>
  
  <p>My knowledge of C++ is quite limited and I had no luck googling, probably mainly because I lack the necessary C++ basic knowledge.</p>
  
  <p>Can anyone explain to me why these errors occur and what terms I need to look up to understand the problem?</p>
  
  <p>Thanks in advance.</p>