Constructor 构造函数问题-初始化列表(c++)

Constructor 构造函数问题-初始化列表(c++),constructor,segmentation-fault,Constructor,Segmentation Fault,我遇到了一个奇怪的问题 我有一个非常简单的构造函数,它创建一个没有值的矩阵: RegMatrix::RegMatrix(const int numRow, const int numCol): _numRow(numRow),_numCol(numCol),_matrix() { } _矩阵是一个包含“Comlex”的向量,一个我创建的对象 VALi,j是定义VALi,ji*_numCol+j 现在,我在函数转置中调用这个构造函数: RegMatrix RegMatrix::tran

我遇到了一个奇怪的问题 我有一个非常简单的构造函数,它创建一个没有值的矩阵:

RegMatrix::RegMatrix(const int numRow, const int numCol):
    _numRow(numRow),_numCol(numCol),_matrix()
{

}
_矩阵是一个包含“Comlex”的向量,一个我创建的对象

VALi,j是定义VALi,ji*_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或类似的值。更奇怪的是,我添加了输出行只是为了确定,它给了我正确的数字! 那么,我的问题是什么呢?
谢谢

您正在索引到一个空向量,它注定要失败。使用at而不是subscript运算符,您将得到一个异常。

根据您的演示,我猜测在如何实现复制构造函数方面可能存在一些问题。

您确定要将向量设置为正确的大小吗?VALi,j返回什么?显示它的定义。在初始值设定项列表中,您没有将任何内容初始化为_matrix.vector被初始化为大小0,应该是ok@yotamoo-如果向量大小为0,则它的[]运算符要求什么值。复数赋值运算符的定义是什么?添加cout行以打印当前对象的_numRow和_numCol以及向量的长度。您可能希望使用numRow*numCol初始化矩阵。