が、それは私が を持っている奇妙な問題だ、私はだ非常に単純なコンストラクタを持っていない値を持つ行列を作成します、オブジェクト私は問題初期化リストは(C++)
を作成したと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の値がガベージ(1つは '0'、もう1つは-10000000など)であるようです。もっと奇妙なのは、確かに出力ラインを追加して、それが私に正しい数字を与えたということです! だから、私の問題になる可能性のあるものは何ですか? ありがとう!
ベクターを正しいサイズに設定してもよろしいですか? –
'VAL(i、j)'は何を返しますか?その定義を表示します。初期化子リストでは、 '_matrix'に何も初期化していません。 – Mahesh
ベクトルはサイズ0に初期化されています。 – yotamoo