Я пытаюсь передать объект как параметр перегруженного оператора + (и класс является классом шаблона), но он дает мне ошибку, которая гласит:Передача объекта в качестве параметра перегруженного оператора + в классе шаблона
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
аргумент в 'оператор +' должен быть 'сопзЬ &' и его тип возвращаемого значения должна быть ссылка, как так: 'Kvader
@Patryk 'operator + =' должен возвращать ссылку, а не 'operator +'. –