Changing Roles
void person::become(actor* p) { role[Person] = p; } permanent
void person::become(Role r) {
require( Person <= r && r <= Final );
if (exists()) self()->become(r);
else {
_role = r;
if ( role [ role] == this ) {
switch (_role) {
case Person: break; nothing changes
case Student: role [ role] = new student; break;
case Employer: role [ role] = new employer; break;
case Final: role [ role] = new actor; break;
};
}
}
}