所以我的任务是以下问题。我不确定这是否是实现此目的的合适方式。
编写init2DArray()的实现,以便为numRows分配内存,然后为numCols分配内存,并为每个单元分配值。 另外,打印出错误声明(如果适用)。
给出了类声明。
#include <iostream>
class TwoDArray{
public:
TwoDArray(){m_TwoDArray = NULL;};
void init2DArray(int numRows, int numCols, int value);
private:
int** m_TwoDArray;
};
这是我的实施
void TwoDArray::init2DArray(int numRows, int numCols, int value){
m_TwoDArray = new int* [numRows];
if(! m_TwoDArray)
std::cout << "Error" << std::endl;
for(int i = 0; i < numRows; i++){
m_TwoDArray[i] = new int [numCols];
}
for(int i = 0; i < numRows; i++){
for(int j = 0; j < numCols; j++){
m_TwoDArray[numRows][numCols] = value;
}
}
}
感谢您的帮助。
答案 0 :(得分:2)
m_TwoDArray[numRows][numCols] = value;
不对。您最终会越过边界访问数组,这将导致未定义的行为。这需要改为:
m_TwoDArray[i][j] = value;