这是一个奇怪的问题 我有一个非常简单的构造函数,它创建一个没有值的矩阵:
RegMatrix::RegMatrix(const int numRow, const int numCol):
_numRow(numRow),_numCol(numCol),_matrix()
{
}
_matrix是一个包含'Comlex'的向量,这是我创建的对象
和VAL(i,j)是#define VAL(i,j) ((i * _numCol) + j)
现在,我在函数转置中调用此构造函数:
RegMatrix RegMatrix::transpose()
{
RegMatrix newMatrix(_numCol,_numRow);
cout << "DIMENSIONS " << newMatrix._numRow << " " << newMatrix._numCol << endl;
for(int j=0; j<_numCol; j++)
{
for(int i=0; i<_numRow; i++)
{
newMatrix._matrix[VAL(i,j)] = _matrix[VAL(j,i)]; //<--SEGMENTATION FAULT
}
}
return newMatrix;
}
这是我的问题:我第一次进入第二个循环时出现分段错误。当我使用eclipse调试器时,我看到newMatrix的_nunRow和_numCol值似乎是垃圾(一个是'0',另一个是-10000000或类似的东西)。更奇怪的是,我添加输出线只是为了确定它给了我正确的数字! 那么,关于什么可以成为我的问题的任何想法? 谢谢!
答案 0 :(得分:0)
您正在索引一个空向量,这注定要失败。使用at
代替下标运算符,您将获得异常。
答案 1 :(得分:0)
我的猜测(基于你所展示的)是你实现复制构造函数可能存在一些问题。