title: C++ Inheritance via dominance warning
body: <p>I'm trying to implement a rather large object that implements many interfaces. Some of these interfaces are pure virtual. I may have a problem in diamond inheritance. Visual Studio is reporting a warning of <code>C4250 ('class1' : inherits 'class2::member' via dominance)</code>. First of all these classes are inherited virtually as it should be. The following is the partial class design that causes this problem.</p>
  
  <pre><code>A        B        C
   \      / \      /
    \    /   \    /
      AB       BC 
      |         |
      |        BC2
      |         |
       \        D: Implementation of B, C, BC, BC2
        \      /
          Big
  </code></pre>
  
  <p>In this entire tree only D implements virtual methods, there is no other definition of the method in question. And all virtual methods of B is listed in warnings. If important, D is a complete class.</p>
  
  <p>I read this happens with Boost serialization and it is safe to disregard the warning. </p>
  
  <p>Is this method I am trying to achieve valid? Is it safe to disregard this warning?</p>
  
  <p><strong>Note 1:</strong> This is not a duplicate of <a href="https://stackoverflow.com/questions/469508/visual-studio-compiler-warning-c4250-class1-inherits-class2member-via-do">Visual Studio Compiler warning C4250 ('class1' : inherits 'class2::member' via dominance)</a>, I have tried the solution proposed there.</p>
  
  <p><strong>Note 2:</strong> I can also send class diagram but its a little more complicated than this.</p>
  
  <p><strong>EDIT:</strong>
  Full warning is as follows: </p>
  
  <pre><code>warning C4250: 'gge::resource::ImageResource' : inherits 
  'gge::graphics::ImageTexture::gge::graphics::ImageTexture::drawin' 
  via dominance
  </code></pre>
  
  <p><code>gge::resource::ImageResource</code> is Big in the drawing, <code>gge::graphics::ImageTexture</code> is D, drawin is one of the six methods I get warning for.</p>