У меня есть class matrix
, где я хочу перегрузить оператор +
, но только если обе матрицы имеют одинаковое количество строк и столбцов.
class matrix
{
private:
int rows, columns;
double* data;
public:
//things here: constructor, destructor etc.
matrix operator+ (const matrix&) const;
};
Тогда я хочу добавить только две матрицыесли они имеют одинаковое количество строк и столбцов.Что я делаю сейчас:
matrix matrix::operator+(const matrix& adder) const
{
if(rows == adder.rows() && columns == adder.columns())
{
matrix temporal;
//Perform the addition
return temporal;
}
else
std::cout << "Unable to add matrices" << std::endl;
//return an empty matrix of 0 rows, 0 columns.
}
Моя проблема в том, что я могу «добавить» любые две матрицы таким образом.Можно ли как-то перегрузить оператор только для случая, когда матрицы имеют одинаковый размер (и я получаю ошибку, когда пытаюсь скомпилировать добавление двух матриц, которые не могут быть добавлены)?
У меня естьта же проблема с использованием параметризованного конструктора, когда я хочу создать матрицу только с положительным числом строк и столбцов.До сих пор я объявляю конструктор с двумя целыми числами, и в случае, если я получаю неправильный ввод целых чисел, просто создаю пустую матрицу.Это вызывает ту же проблему, потому что мне разрешено «создавать» матрицу с отрицательными строками, но я не узнаю, пока не захочу использовать матрицу позже.