我有這個奇怪的問題:當我的計劃達成這個方法:有問題的矢量返回值 - 沒有真正更新?
//Returns the transpose matrix of this one
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;
}
突然崩潰......
,當我和我的VS調試運行它,它看起來只是所有優良,新的矩陣填充了相關的值,直到return result;
從某個神祕的原因返回空矩陣向量。
我在哪裏出錯?
這裏是我的拷貝構造函數的實現:
//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; i < 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];
}
}
}
我的賦值操作符的實現:
//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;
}
你的副本構造函數是什麼樣的? – 2010-10-07 22:48:32
你的拷貝構造函數做了很多和不必要的拷貝(見PigBen的答案),但最終它應該工作。我能想象的代碼是這樣'RegMatrix換位= someMatrix.transpose();'所以接下來的犯罪嫌疑人是你的賦值運算符 – 2010-10-07 23:09:22