title: Abstract Base Class, private inheritance and multiple public inheritance
body: <p>I have an issue or a misunderstanding. Here I have some ABC (<code>Person</code>) also two privately derived virtual classes (<code>PokerPlayer</code> and <code>Gunslinger</code>). To this part everything works perfect until I have to declare a public class (<code>BadDude</code>) derived from (<code>PokerPlayer</code> and <code>Gunslinger</code>). The problems is  =>.</p>
  
  <p>1)</p>
  
  <pre><code> BadDude::BadDude(const BadDude &amp; obj) 
  : Person::Person(obj) /*&lt;- the problem*/, PokerPlayer(obj) , Gunslinger(obj) {}
  </code></pre>
  
  <hr>
  
  <p>2)
  This happens also with <code>operator=();</code>.</p>
  
  <pre><code>BadDude &amp; BadDude::operator=(const BadDude &amp; obj)
  {
      if (this == &amp; obj)
          return *this;
  
      Person::operator=(obj); //dose not work
      PokerPlayer::oprtr(obj);
      Gunslinger::oprtr(obj);
  
      return *this;
  }
  </code></pre>
  
  <p>3)
  I cant reach protected ABC's method from BadDude's method</p>
  
  <pre><code>void BadDude::Show()const
  {
      Person::Data(); //the same problem
      Gunslinger::Data();
      PokerPlayer::Data();
  }
  </code></pre>
  
  <p>This is what studio says to problem  #1</p>
  
  <pre><code>error C2436: '{ctor}' : member function or nested class in constructor initializer list
  </code></pre>
  
  <p>This is what studio says to problem  #2</p>
  
  <pre><code> error C2249: 'Person::operator =' 
  : no accessible path to private member declared in virtual base 'Gunslinger'
  </code></pre>
  
  <p>This is what studio says to problem #3</p>
  
  <pre><code>error C2249: 'Person::Data' : no accessible path to private member declared in virtual base 'Gunslinger'
  </code></pre>
  
  <p>Here the code <a href="http://pastebin.com/4h5ymNXQ" rel="nofollow">enter link description here</a></p>