あなたはできる
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);
}