Ok so I understand how to solve the problem of the diamond of death inheritance when you have full control over all the classes but what if you only have control over the last class to inherit from both So I have this:
class A {};
class B : public A {};
class C : public A {};
class D : public B, public C {};
and I have no way of editing B and C only D, is there an easy way I can do this?
Fake it by containment. Have D contain B and C and give D the same public interface as the union of B and C's public interface. Then call the appropriate methods of B and C from D's public interface.
Of course you will have a problem casting and polymorphism as it won't follow the laws of inheritance.
In short, there's no good way.