I just finished reading the article "Wade not in unknown waters: Part 4"
It mentions that multiple inheritance can be quite messy, etc.
In the article, the example shows a object that inherits from two objects that inherit from a common base object... it seems that this is the source of the issues he is addressing. The question is do the same issues arise if an object inherits from two objects that do not share an object in their own inheritance trees. I.E
Class C inherits from B1 and B2, B1 inherits from B1_1 and B1_2, and B2 inherits from B2_1 and B2_2... does this still pose an issue?
The second question. In C# you can not use multiple inheritance, and object can only have a single base object, however they can implement any number of Interfaces... however the concept of a interface is not explicitly defined in C++.
The article mentions the concept of "Mix-ins", defining a mix-in as "[A] class doesn't contain any data. All its functions are usually pure virtual." which, if you remove usually, pretty well defines a C# interface. So he is saying that emulating interfaces via classes containing nothing but pure virtual functions will not cause an issue?
Also, he keeps mentioning virtual inheritance as the problem, but doesn't it seem more that multiple inheritance is the issue rather than virtual?