請教一個模板類的問題~~~~~~
請看以下代碼:
template <class T1,class T2>
class CList
{
private:
int Compare(double num1,double num2);
int Compare(float num1,float num2);
int Compare(T1 num1,T1 num2);
public: void Sort(tmpList<T1,T2>* listHead);
};
template<class T1, class T2>
void CList<T1,T2>::Sort(tmpList<T1,T2>* listHead)
{
........
Compare(..);
...........
}
void main()
{
CTmpList<int,CUser*> IntList;
CTmpList<float,CUser*> FloatList;
CList<double,data*> DoubleList;
IntList.Sort(..);
FloatList.Sort(..);
DoubleList.Sort(..);
}
編譯出現以下錯誤
::Compare(float,float)' : member function already defined or declared
::Compare(double,double)' : member function already defined or declared
顯而易見,int Compare(T1 num1,T1 num2)函數實際上已經包含了對float,double類型的比較,所以會報這樣的錯。我的原意是想讓float類型的比較自動調用Compare(float num1,float num2) ,讓double類型的比較自動調用Compare(double num1,doublenum2) ,而其余類型而調用模板函數Compare(T1 num1,T1 num2),請問該如何實現?