我想構建一個寬度矩陣的類。在它的構造函數中,它想知道數組的高度和寬度,並且它想要數組本身,然後必須能夠打印數組並重載某些運算符。該數組必須是一個浮點數組。這是我到目前爲止有: 兩個定義的參數:使用多維數組
#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++二維數組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;
}
}
而這正是它出錯:程序只是簡單地崩潰。我有點爲什麼它崩潰:我想我需要得到什麼數組[h]指向(這是一個浮點數組的大小寬度),但試圖做到這一點給了我錯誤:不能將float *轉換爲float [] *。我需要做什麼?
陣列[高度] [寬度] - >陣列並[h] [W]。另外,std :: vector。另外,boost.multiarray。還有https://gist.github.com/rmartinho/3959961 – 2013-02-25 11:26:02
哦。輸入錯誤。在我完全理解多維數組之後,我會查看矢量,但是我仍然在學習,所以我不想急於模板,直到我知道基本知識。 – Cheiron 2013-02-25 11:30:52
std :: vector *是基礎知識。手動內存管理是先進的東西。 – 2013-02-25 11:32:54