2016-11-30 41 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