оператор * не сохраняет матрицу после возврата - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть разреженная матрица, построенная с векторами (vector<vector<int>>)

Когда я пытался умножить скаляр на матрицу, оператор правильно выполняет операции, но когда он возвращает значение, он возвращает пустую матрицу. Это оператор *:

MatriuSparse MatriuSparse::operator*(float s) {
    MatriuSparse aux;
    aux.matriu = matriu;
    aux.m_Nlinies = m_Nlinies;
    aux.m_Ncolumnes = m_Ncolumnes;
    for (int i = 0; i < m_Nlinies; i++) {
        for (int j = 0; j < m_Ncolumnes; j++) {
            aux.matriu[i][j] *= s;
        }
    }
    return aux;
}

Это деструктор:

MatriuSparse::~MatriuSparse() {
    matriu.clear();
}

Это конструктор копирования:

MatriuSparse::MatriuSparse(const MatriuSparse& m) {

    m_Nlinies = m.m_Nlinies;
    m_Ncolumnes = m.m_Ncolumnes;
    m_valor = m.m_valor;
    matriu = m.matriu;
    for (int i = 0; i < m_Nlinies; i++) {
        for (int j = 0; j < m_Ncolumnes; j++) {
            matriu[i][j] = m.matriu[i][j];
        }
    }

}

В основном я вызываю оператора в этой форме:

MatriuSparse m1(nomFitxer); //Constructor call.
MatriuSparse mProdX1 = m1 * 6; 
...