Control

-- dispatching
  class C : public A { 
\fbox{C}
public: enum { PERSON = 0 , STUDENT }; C() { roles[PERSON]=0; roles[STUDENT]=0; role(0);
default role

} A* operator->() { return roles [role]; } void role( int r );
role switching

protected: int _role; A* roles[2]; };

slide: Control