/** * Multiple Inheritance issues * Example 1 */ #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; } }; class Parent1:public 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 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 //g++ complains InstanceName is ambigous << bar.Parent1::InstanceName << "\t" << bar.Parent2::InstanceName << endl; }