2016-11-30 42 views
0

您好我想我失去了这种技术的东西。试图按照例子,但下面给我一个错误: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; 
} 

回答

2

不能使用模板偏特单个成员函数 - 需要专门整个类,而不是(但是,全模板特会好起来的)。

+0

那么如何去解决问题,在不改变类接口? – tomtom

+0

如何使用enable_if_t表达式来执行此操作? – tomtom

+0

@tomtom是什么情况下'isarmed == FALSE'您的实现?你大概可以将两者结合起来,而不是使用部分专精。 – Eugene