C++ Must take either zero or one argument
Matrix Matrix::operator* (int f,const Matrix &matrix)
{ Matrix M;
for (int a= 1; a <= matrix.x; a++)
{
for (int b = 1; b <= matrix.y; b++)
{M.Mas[a][b] = f * matrix.Mas[a][b];
// M.Mas[a][b]=Mas[a][b];}
}
return M;
}
'Matrix Matrix::operator(int, const Matrix&)' must take either zero or one argument* Выдает ошибку при попытке компиляции с перегрузкой оператора *, в чем проблема? Как мне использовать два аргумента?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Оператор, определенный в классе, принимает в качестве первого операнда сам объект класса. Так что то, что вы попытались определить - некий (невозможный) тернарный оператор *.
Чтобы определить бинарный оператор с первым операндом int - его надо определять вне класса:
Matrix operator* (int f,const Matrix &matrix) { ... }
Со вторым int и первым const Matrix &matrix - можно как свободный оператор
Matrix operator* (const Matrix &matrix, int f) { ... }
или в самом классе
Matrix operator* (int f) const { ... }