printMatrixクラス関数のコンストラクタで作成した2次元配列にアクセスできません。私がシンプルなcoutを使ってメインで関数を呼び出すと、< < "test";それが印刷されます。 matrixArray [] []の値を印刷しようとすると、何も印刷されずにプログラムが終了します。 2d配列を正しく参照していませんか?C++のクラス関数で2次元配列を参照する
class matrix
{
int **matrixArray;
public:
int matrixSize = 0;
matrix(int matrixSize);
void printMatrix();
void makeMagicSquare();
};
matrix::matrix(int const matrixSize)
{
this->matrixSize = matrixSize ;
int** matrixArray = new int*[matrixSize];
for(int i = 0; i<matrixSize; i++){
matrixArray[i] = new int[matrixSize];
}
for(int row = 0; row < matrixSize ;row++)
{
for(int col = 0; col < matrixSize; col++)
{
matrixArray[row][col] =0;
cout << matrixArray[row][col] << " ";
}//End for Col
cout << endl;
}//End for Row
}
//printMatrix Function
void matrix::printMatrix(){
for(int row = 0; row < matrixSize;row++)
{
for(int col = 0; col < matrixSize; col++)
{
cout << "test" << " ";
//Not able to print from print function
cout << matrixArray[row][col] << endl;
}// end col
cout << endl;
}//end row
}
実際に行列を1次元ベクトルに格納する必要があります。 – NathanOliver
代わりに 'ベクトル>'を使うと誰かがあなたを叩くでしょうか? –
@ Jean-FrançoisFabreキャッシュのローカリティを気にする人のみ。 1Dベクトルが優れています。それについては – vsoftco