我想傳遞一個對象作爲重載運算符+的參數(並且該類是模板類),但它給了我一個錯誤,指出:傳遞一個對象作爲重載運算符的參數+模板類
error C2955: 'Kvader': use of class template requires template argument list
這是我的類:
template <class Q>
class Kvader {
private:
Q a, b, c;
public:
Kvader(const Kvader &temp);
Kvader operator+(Kvader);
};
,這是我的重載+方法:
template <class Q>
Kvader Kvader<Q>::operator+(Kvader<int> temp) {
a += temp.a;
b += temp.b;
c += temp.c;
return *this;
}
我以爲
Kvader Kvader<Q>::operator+(Kvader<int> temp)
就足夠作爲參數列表。我究竟做錯了什麼?
在我的主要我只是做2個對象,(第二個調用複製構造函數),然後我嘗試將它們加在一起。
int main(){
Kvader<int> object1, object2(object1);
object1 = object1 + object2;
return 0;
}
您需要在返回類型的模板參數。作爲一個猜測,'Kvader
'operator +'中的參數應該是'const',它的返回類型應該是這樣的參考:'Kvader
@Patryk'operator + ='應該返回一個引用,而不是'operator +'。 –