Преобразование из переменной собственного класса в переменную обычного типа

У меня есть свой класс "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; 
}

Я понял, что можно использовать перегрузку =, когда какая-то переменная преобразуется к собственному классу, но не понимаю, можно ли использовать это в обратную сторону. Или же для такого лучше создать отдельный метод?


Ответы (0 шт):