部分功能模板专业化

时间:2016-11-30 19:26:57

标签: c++ templates partial-specialization

嗨,我想我错过了这种技巧。试图按照例子,但以下给我一个错误:invalid use of incomplete type ‘class Citizen<T, minAge, maxAge, true>’

template <typename T, T minAge, T maxAge, bool isarmed>
class Citizen {
public:

    Citizen(T health, T age);
    Citizen(T health, T age, T attackPower);
    T getAttackPower();

private:
    T _health;
    T _age;
    T _attackPower;
};

template <typename T, T minAge, T maxAge>
T Citizen<T, minAge, maxAge, true>::getAttackPower() {
    return _attackPower;
}

1 个答案:

答案 0 :(得分:2)

您不能对单个成员函数使用部分模板特化 - 需要专门化整个类(但是,完整的模板专业化可以)。