title: Multiple inheritance with one base class
body: <p>(Removed original text as it is unrelated to the current question which has already been answered. See revisions.)</p>
  
  <p>Here is my example <code>test.hpp</code> (simplified):</p>
  
  <pre><code>class House {
      private:
          int nWindows;
      public:
          House(int nWindows);
          int getNumberOfWindows();
  };
  
  class PaintedHouse : public virtual House {
      private:
          int colorCode;
      public:
          PaintedHouse(int nWindows, int colorCode);
          int getColorCode();
  };
  
  class OccupiedHouse : public virtual House {
      private:
          int nPeople;
      public:
          OccupiedHouse(int nWindows, int nPeople);
          int getNumberOfPeople();
  };
  
  class PaintedOccupiedHouse : public PaintedHouse, OccupiedHouse {
      public:
          PaintedOccupiedHouse(int nWindows, int colorCode, int nPeople);
  };
  </code></pre>
  
  <p>And <code>test.cpp</code>:</p>
  
  <pre><code>#include "test.hpp"
  
  House::House(int nWindows) { this-&gt;nWindows = nWindows; }
  int House::getNumberOfWindows() { return this-&gt;nWindows; }
  
  PaintedHouse::PaintedHouse(int nWindows, int colorCode) : House(nWindows) {
      this-&gt;colorCode = colorCode;
  }
  int PaintedHouse::getColorCode() { return this-&gt;colorCode; }
  
  OccupiedHouse::OccupiedHouse(int nWindows, int nPeople) : House(nWindows) {
      this-&gt;nPeople = nPeople;
  }
  int OccupiedHouse::getNumberOfPeople() { return this-&gt;nPeople; }
  
  PaintedOccupiedHouse::PaintedOccupiedHouse(int nWindows, int colorCode, int nPeople)
              : PaintedHouse(nWindows, colorCode), OccupiedHouse(nWindows, nPeople) {}
  </code></pre>
  
  <p>GCC returns:</p>
  
  <pre><code>test.cpp: In constructor ‘PaintedOccupiedHouse::PaintedOccupiedHouse(int, int, int)’:
  test.cpp:18:72: error: no matching function for call to ‘House::House()’
      : PaintedHouse(nWindows, colorCode), OccupiedHouse(nWindows, nPeople) {}
                                                                          ^
  test.cpp:18:72: note: candidates are:
  test.cpp:4:1: note: House::House(int)
   House::House(int nWindows) { this-&gt;nWindows = nWindows; }
   ^
  test.cpp:4:1: note:   candidate expects 1 argument, 0 provided
  In file included from test.cpp:2:0:
  test.hpp:2:7: note: constexpr House::House(const House&amp;)
   class House {
         ^
  test.hpp:2:7: note:   candidate expects 1 argument, 0 provided
  test.hpp:2:7: note: constexpr House::House(House&amp;&amp;)
  test.hpp:2:7: note:   candidate expects 1 argument, 0 provided
  </code></pre>
  
  <p>Could you give me any advice what I am doing wrong? Is the general concept correct?</p>