如何重載minus運算符接受相同數量的參數但具有不同的返回類型?運算符超載(相同參數,不同返回類型)
模板類:
template <typename T>
T minus (T x, T y) {
return (x - y);
}
template <typename T>
double absMinus (T x, T y) {
double sd = abs(x - y);
return sd;
}
運算符重載類:
Minus operator-(Minus &p, Minus &q) {
return (p.something - q.something);
}
double operator-(Minus &p, Minus &q) {
return (p.something() - q.something());
}
當我試圖編譯,它給了我下面的錯誤:
Minus.h:25: error: new declaration ‘double operator-(Minus&, Minus&)’
Minus.h:24: error: ambiguates old declaration ‘Minus operator-(Minus&, Minus&)’
你不能只返回類型重載函數。 –
假設你有'Minus p,x;'。 **你期望'p-x;'返回什麼?你不要把結果賦給任何東西,只要寫'p-x;'。 –
注意:您應該使用這種操作符返回一個const或對const的引用。否則,你將能夠寫出愚蠢的語句,如'(a - b)= c;' – JBL