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 { ... }
→ Ссылка