c++ - Problematic vector return value - not really updated? -


i'm having weird problem: when program reach method:

//returns transpose matrix of 1 regmatrix regmatrix::transpose() const{     regmatrix result(numcol,numrow);     int i,j;     for(i=0;i<numrow;++i)         for(j=0;j<numcol;++j){             result._matrix[j][i] = _matrix[i][j];         }          return result; } 

it crashes...

when ran vs debugger, looked fine, new matrix filled relevant values, till line return result; mysterious reason returned empty matrix vector.

where go wrong??


here implementation copy constructor:

//cctor of regmatrix                     regmatrix::regmatrix(const regmatrix &other): numrow(other.getrow()), numcol(other.getcol()){      //create     _matrix = vector<vector<mydouble> >(other.getrow());     int i,j;     for(i=0; < numrow; i++)         _matrix[i] = vector<mydouble>(other.getcol());      //copy matrix     for(i=0;i<numrow; ++i){         for(j=0;j<numcol; ++j){             _matrix[i][j] = other._matrix[i][j];         }     } } 

my assignment operator implementation:

//regmatrix = regmatrix  regmatrix& regmatrix::operator=(const regmatrix rhs){     assert(numrow == rhs.getrow() && numcol == rhs.getcol());     if(*this != rhs){         int i,j;         for(i=0;i<numrow;++i)             for(j=0;j<numcol;++j){                 _matrix[i][j] = rhs._matrix[i][j];             }     }      return *this; } 

assuming mydouble has correct copy constructor, should able reduce copy constructor this:

regmatrix::regmatrix(const regmatrix &other):numrow(other.getrow()), numcol(other.getcol()),     _matrix(other._matrix) { } 

see gets you.

edit: assignment operator might problem if columns , rows aren't equal. you're throwing assert in instance, program going abort. want? wouldn't rather assignment change columns , rows match new values? if so, can this:

regmatrix & regmatrix::operator=(const regmatrix & rhs) {     if(this == &rhs)         return *this;     numrow = rhs.getrow();     numcol = rhs.getcol();     _matrix = rhs._matrix;     return *this; } 

Comments

Popular posts from this blog

ASP.NET/SQL find the element ID and update database -

jquery - appear modal windows bottom -

c++ - Compiling static TagLib 1.6.3 libraries for Windows -