| class EmployeeInterface { public: virtual virtual void getEmployeeType(void) = 0; }; |
| class Employee : public virtual EmployeeInterface {...}; class Empowered : public Employee, public virtual EmployeeInterface {...}; class Manager : public Empowered, public virtual EmployeeInterface {...}; |
| void use(EmployeeInterface* e) {...} ... use(&e1); // output: Employee use(&e2); // output: Empowered use(&e3); // output: Manager |