我有以下类维护一些全局状态:
struct StateController{
..
..
..
StateChanger1Inverse apply_state_changer(const StateChanger1Inverse& s1);
StateChanger2Inverse apply_state_changer(const StateChanger2Inverse& s1);
StateChanger3Inverse apply_state_changer(const StateChanger3Inverse& s1);
return
}
,即应用更改给出了变化的倒数(在这种情况下始终是1比1)
我想通过模板化来删除一些重复的代码,如下所示:
struct StateController{
..
..
..
template<class StateChange>
typename StateChange::inverse_change apply_state_changer(const StateChange& s1);
}
对于必须定义inverse_change typedef的StateChange对象:
即
struct StateChanger1{
typedef StateChanger1Inverse inverse_change
..
other stuff
}
现在,在我的实现文件中,我只有这些成员函数的特化,因为一般情况没有意义,因此ide警告我没有定义函数。我应该说代码编译得很好。
这样做是否可以接受,而不是定义一般成员函数?