我想构建一个宽度矩阵的类。在它的构造函数中,它想知道数组的高度和宽度,并且它想要数组本身,然后必须能够打印数组并重载某些运算符。该数组必须是一个浮点数组。这是我到目前为止有: 两个定义的参数:使用多维数组
#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