Пишу класс квадратной матрицы, вот, собственно, сам класс:
matrix.h#ifndef MATRIX_H
#define MATRIX_H
#include <string.h>
class Matrix
{
private:
std::string name;
double **matrix;
int size;
public:
// Default constructor
Matrix() : name("NaN"), matrix(nullptr), size(0)
{ }
// Constructor with values
Matrix(std::string nm, int sz) : name(nm), size(sz)
{
try
{
matrix = new double *[size];
for(int i = 0; i < size; i++)
matrix[i] = new double[size];
}
catch(std::bad_alloc& ex)
{
std::cerr << ex.what() << std::endl;
}
}
// Arithmetic shit
bool operator== (const Matrix &operand);
bool operator!= (const Matrix &operand);
Matrix operator+(const Matrix &operand);
};
#endif
matrix.cpp#include <iostream>
#include "matrix.h"
/* return 1 if ==
return 0 if !=*/
bool Matrix::operator== (const Matrix &operand)
{
if(operand.size != this->size)
return 0;
for(int i = 0; i < this->size; i++)
{
if(this->matrix[i][i] != operand.matrix[i][i])
return 0;
}
return 1;
}
/* return 1 if !=
return 0 if ==*/
bool Matrix::operator!= (const Matrix &operand)
{
if(operand.size != this->size)
return 1;
for(int i = 0; i < this->size; i++)
{
if(this->matrix[i][i] != operand.matrix[i][i])
return 1;
}
return 0;
}
Matrix Matrix::operator+ (const Matrix &operand)
{
const Matrix result;
//pass
}
Мой вопрос по оператору сложения. Этот метод возвращает объект класса. Складывать мы можем только матрицы одного порядка. Если, к примеру, матрицы разного порядка, или же через обработчик исключений я поймаю плохое выделение памяти, то что должен вернуть этот метод, если операция не может быть произведена?
nullptr
же мы не можем вернуть.