Как создать оператор, который будет выполнять умножение без изменения исходных значений?Оператор умножения меняет исходные значения
Matrix3 & operator*(const Matrix3 &matrix)
{
//do multiplication
return *this;
}
Итак ...
Matrix3 m1 = Matrix3(1, 2, 3, 3, 2, 1, 2, 1, 3);
Matrix3 m2 = Matrix3(4, 5, 6, 6, 5, 4, 4, 6, 5);
Matrix3 mNew = m1 * m2; <--- mNew is now correct, but it has also changed m1
Такое поведение полностью ожидается, и делает абсолютный смысл, но как я могу избежать этого происходит?
Я хочу mulitply m1
от m2
и оставляйте их неизменными, но обновление mNew
. Я думаю, что мне нужен метод с 2 параметрами, входящими (аналогично оператору в этом потоке -> [simple c++: How to overload the multiplication operator so that float*myClass and myClass*float works), но я не могу найти приемлемое определение, которое разрешит мой компилятор.
Ваша перегрузка требует создания отдельного экземпляра и возврата по значению. –
@bkausbk: Нет, это все равно изменит матрицу, прежде чем вернуть ее копию. Вам нужно создать новую матрицу для хранения результата. –