你可以
1 在编译时使用模板魔法对不同的和不相关的类型执行不同的动作;
2 在运行时使用继承和多态对继承相关的类型执行不同的操作(如 gliderkite 和 rolandXu 的答案);
3 对(或其他整数类型)使用 C 风格的switch
语句。enum
编辑:(非常简单)使用模板的示例:
/// class template to be specialised
template<typename> struct __Action;
template<> struct __Action<Soccer> { /// specialisation for Soccer
static void operator()(const Soccer*);
};
template<> struct __Action<Badminton> { /// specialisation for Badminton
static void operator()(const Badminton*);
};
/// function template calling class template static member
template<typename Sport> void Action(const Sport*sport)
{
__Action()(sport);
}