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 |