Pure virtual classes

class EmployeeInterface {
public:
virtual $ \tilde{\;}$ EmployeeInterface() { }
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



Leo Liberti 2008-01-12