@aresouji

Как перегрузить оператор * для собственного класса?

matrix.hpp
class Matrix
{
public:
  Matrix(int rows, int columns, const double* elems);
  ~Matrix();

  Matrix* operator*(Matrix& matrix);

  double det();
  Matrix* invert();
  Matrix* transpose();
};


matrix.cpp
Matrix* Matrix::operator*(Matrix& matrix)
{
//
}


main.cpp
int main(int argc, char** argv)
{
  double d[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};

  Matrix* m = new Matrix(3, 3, d);

  Matrix* m1 = new Matrix(3, 3, d);

  Matrix* m2 = m * m1;

  return EXIT_SUCCESS;
}


Текст ошибки: main.cpp:16:5: error: invalid operands of types ‘Matrix*’ and ‘Matrix*’ to binary ‘operator*’
m * m1;


Спасибо.
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
Вы пытаетесь перемножить указатели. Разыменуйте их для начала.
Либо сделайте оператор не членом класса, с сигнатурой (Matrix*, Matrix*).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы