У меня есть этот простой код ниже, шаблон с 2 параметрами типа. Если я объявлю свой класс с тем же типом (как BidirectionalMap<int,int>
) Я получаю сообщение об ошибке:
int BidirectionalMap<T,S>::operator [](T) const' : member function already defined or declared
Вот мой код шаблона:
template <class T, class S>
class BidirectionalMap{
int count(T t){
return 1;
}
int count(S s){
return 1;
}
};
Полученная ошибка является нормальной, потому что после замены у вас есть
template <>
class BidirectionalMap<int, int>
{
int count(int t){ return 1; }
int count(int s){ return 1; } // Duplicated method
};
Чтобы решить эту проблему, вы можете предоставить частичную специализацию:
template <class T>
class BidirectionalMap<T, T>
{
int count(T t) { return 1; }
};