已经使用相同类型定义的C ++模板成员函数

时间:2015-09-13 13:46:09

标签: c++ templates type-parameter

我在下面有这个简单的代码,一个带有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;
    }
};

1 个答案:

答案 0 :(得分:4)

你得到的错误是正常的,因为替换后你有

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; }
};