Below Code is on Diamond problem. virtual inheritance solves this ambiguity.
#include<iostream>
using namespace std;
class A {
public: void something(){cout<<"A"<<endl;}
};
class B: virtual public A
{
public: void something() {cout<<"B"<<endl;}
};
class C: virtual public A {
public: void something() {cout<<"C"<<endl;}
};
class D: public B, public C {
public: void something() {cout<<"D"<<endl;}
};
int main()
{
A *d = new D();
d->something();
}
- How virtual inheritance solves this problem?? will it have vtable entry?
- Which path is taken by the compiler to reach parent class??