幅行列を機能させるクラスを構築しようとしています。そのコンストラクターでは、配列の高さと幅を知りたいと思っており、配列自体が必要なため、配列を出力していくつかの演算子をオーバーロードできる必要があります。Array は float の配列でなければなりません。これは私がこれまでに持っているものです: 2 つの定義済みパラメーター:
#define HEIGHT 3
#define WIDTH 3
配列の作成:
void Assignment_1::start(){
float **matrix = new float *[HEIGHT];
for (int i = 0; i < HEIGHT; i++){
matrix[i] = new float[WIDTH];
}
// 5 6 11
// 7 2 8
// 5 1 4
matrix[0][0]=5;
matrix[0][1]=6;
matrix[0][2]=11;
matrix[1][0]=7;
matrix[1][1]=2;
matrix[1][2]=8;
matrix[2][0]=5;
matrix[2][1]=1;
matrix[2][2]=4;
Matrix * matrixA = new Matrix(HEIGHT,WIDTH,matrix);
matrixA->printMatrix();
}
現在、C++ の 2 次元配列には HEIGHT ポインターの通常の配列が存在し、それぞれが WIDTH サイズの配列を指していることを理解しています。
コンストラクターとグローバル変数:
Matrix::Matrix(int width, int height, float **array){
this->height = height;
this->width = width;
this->array = array;
}
//in Matrix.h:
int width, height;
float ** array;
この時点まではすべて問題ありません。ここで、実際に配列を印刷して使用したいと思います。
void Matrix::printMatrix(){
for (int h = 0; h < height; h++){
for (int w = 0; w < width;w++){
std::cout <<array[height][width]<<" ";
}
std::cout << std::endl;
}
}
そして、ここで問題が発生します。プログラムは単純にクラッシュします。クラッシュする理由はちょっとわかります: array[h] が指しているもの (サイズ幅の float 配列) を取得する必要があると思いますが、それをしようとするとエラーが発生します: float* を float[] に変換できません*。私は何をする必要がありますか?