/** * Multiple Inheritance issues - Virtual inheritance * Example 2 */ #include <iostream> using namespace std; class GrandParent { public: char InstanceName[255]; GrandParent() { cout << "In GrandParent class ctor" << endl; strcpy( InstanceName,"GrandParent"); } ~GrandParent() { cout << "In GrandParent class dtor" << endl; } virtual char * Id (void ) { return "GrandParent"; } }; class Parent1:public virtual GrandParent { public: Parent1() { cout << "In Parent1 class ctor" << endl; strcpy( this->InstanceName, "Parent1" ); } ~Parent1() { cout << "In Parent1 class dtor" << endl; } virtual char * Id (void ) { return "Parent1"; } }; class Parent2:public virtual GrandParent { public: Parent2() { cout << "In Parent2 class ctor" << endl; strcpy( this->InstanceName, "Parent2" ); } ~Parent2() { cout << "In Parent2 class dtor" << endl; } virtual char * Id (void ) { return "Parent2"; } }; class Child: public Parent1, public Parent2 { public: Child() { cout << "In Child class ctor" << endl; } ~Child() { cout << "In child class dtor" << endl; } virtual char * Id ( void ) { return "Child"; } }; int main( int argc, char *argv[]) { Child bar; cout << "Instance Name: " << bar.InstanceName << endl; }