, , switch , - , . , , , , switch .
, . , :
struct Task {virtual void do_things() = 0;};
struct TaskA : Task {virtual void do_things() {}};
struct TaskB : Task {virtual void do_things() {}};
struct TaskJ : Task {virtual void do_things() {}};
, , () Task; task->do_things(). , , switch, .