我有三個模板類型(基本上與一個多構件的一對)的模板類和我不能得到比較超負荷工作:C++:模板類與比較運算符重載
頭:
template<typename FirstType, typename SecondType, typename ThirdType>
class Triple
{
public:
Triple(FirstType f, SecondType s, ThirdType t) : var1(f), var2(s), var3(t)
{}
...
private:
FirstType var1;
SecondType var2;
ThirdType var3;
};
template<typename F1, typename S1, typename T1, typename F2, typename S2, typename T2>
bool operator==(const Triple<F1,S1,T1>& one, const Triple<F2,S2,T2>& other)
{
return true; //just for testing
}
template<typename F1, typename S1, typename T1, typename F2, typename S2, typename T2>
bool testFunc(const Triple<F1,S1,T1>& one, const Triple<F2,S2,T2>& other)
{
return true; //just for testing
}
主:
Triple<int, int, int> asdf(1, 1, 2);
Triple<int, int, int> qwer(1, 21, 2);
cout << asfd == qwer; //doesn't work
cout << testFunc(asfd, qwer); //works
我得到==操作符以下錯誤信息:
binary '==' : no operator found which takes a right-hand operand of type 'Triple<FirstType,SecondType,ThirdType>'
爲什麼testFunc有效,但運算符重載不?請注意,我想包括比較兩種不同類型的三元組的可能性,因爲有人可能想要比較整數與雙打。我也嘗試在類內部實現相同的結果。
BTW,你應該嘗試使用'的std :: tuple',而不是爲它創建自己的類。 – Nawaz