C ++只定义模板成员函数的特化

时间:2017-10-25 17:37:25

标签: c++

我有以下类维护一些全局状态:

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警告我没有定义函数。我应该说代码编译得很好。

这样做是否可以接受,而不是定义一般成员函数?

0 个答案:

没有答案