Преобразование из переменной собственного класса в переменную обычного типа
У меня есть свой класс "Matrix", который представляет собой матрицу и связанные с ней операции:
class Matrix
{
public:
Matrix();
Matrix(const int r, const int c);
Matrix(const Matrix& other);
Matrix(const int value);
~Matrix();
void Print();
void Input(const char* name);
private:
int row = 0;
int col = 0;
int** M = nullptr;
};
Мне нужно определить преобразование из матрицы в переменную типа double, таким образом, чтобы по итогу переменная являлась средним арифметическим элементов матрицы. Могу ли я сделать это с помощью перегрузки оператора =, например, как-то так:
double Matrix::operator = (const Matrix& other)
{
float result = -1;
if (other.M != nullptr)
{
result = 0;
for (int i = 0; i < other.row; i++)
{
for (int j = 0; j < other.col; j++)
{
result = result + other.M[i][j];
}
}
result = result / (other.row * other.col);
}
return result;
}
Я понял, что можно использовать перегрузку =, когда какая-то переменная преобразуется к собственному классу, но не понимаю, можно ли использовать это в обратную сторону. Или же для такого лучше создать отдельный метод?