//: C06:MultipleInheritance2.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2000 // Copyright notice in Copyright.txt // Virtual base classes #include "../purge.h" #include #include using namespace std; class MBase { public: virtual char* vf() const = 0; virtual ~MBase() {} }; class D1 : virtual public MBase { public: char* vf() const { return "D1"; } }; class D2 : virtual public MBase { public: char* vf() const { return "D2"; } }; // MUST explicitly disambiguate vf(): class MI : public D1, public D2 { public: char* vf() const { return D1::vf();} }; int main() { vector b; b.push_back(new D1); b.push_back(new D2); b.push_back(new MI); // OK for(int i = 0; i < b.size(); i++) cout << b[i]->vf() << endl; purge(b); } ///:~