Я пытаюсь перегрузить некоторые операторы для моего класса Vector, но при попытке утверждать (v + v == v * 2) получается ошибка ниже:
[Ошибка] нет соответствия для 'operator == '(типы операндов: Vector и Vector).
При использовании assert (v == v) функция работает нормально, и я также могу создавать новые векторы, используя +и * оператор.
class Vector{
private:
vector<double> arr;
friend bool operator ==( Vector &src, Vector &src2) {
int z = src.size();
if (z != src2.size()){
return false;
}
for (int i = 0; i < src.size(); i++){
double p = src.at(i);
if (p != src2.at(i)){
return false;
}
};
return true;
};
friend Vector operator +(Vector &src, Vector &src2) {
Vector TEMP = src;
for (int i = 0; i < src.size(); i++){
TEMP.arr[i] = src.arr[i] + src2.arr[i];
}
return TEMP;
};
friend Vector operator *(Vector &src, const int x) {
Vector TEMP = src;
for (int i = 0; i < src.size(); i++){
TEMP.arr[i] = src.arr[i] *x;
}
return TEMP;
};
};
int main() {
double data1[] = {3.4, 4.4, 6.0};
Vector v(sizeof(data1)/sizeof(double), data1);
assert(v == v);
assert(v + v == v * 2);
};