У меня проблема. Я внедрил пользовательскую функцию operator*
в качестве функции-члена.C++ Перегрузка оператора, не видя других операторов
В заголовке:
class Matrix
{
public:
Matrix operator*(int arg); //(1)
...
}
Matrix operator*(int a, const Matrix& m)
{
return m * a; //(2)
}
(1) Я могу сделать это в main.cpp:
Matrix a = Matrix::GetRandom.....
Matrix b = a * 2;
(2) На этой линии, я получаю сообщение об ошибке компилятора:
IntelliSense: no operator "*" matches these operandsnoperand types are: const Matrix * int
Как исправить это?
Вы также можете написать оба оператора, как (не член) другу функции 'оператор друга Matrix (Матрица, целое); и' друг матричного оператора (междунар, Matrix); ' , Это сохраняет оба симметричных, и они объявляются рядом друг с другом. – dyp