【发布时间】:2019-11-10 17:48:55
【问题描述】:
我目前正在使用 C++ 进行一些编程,但在尝试声明和初始化 int 类型的动态二维数组时遇到了很多麻烦。这应该是一个面向对象的程序,但我创建这种数组的唯一真实经验是将所有内容都放在一个文件中。
这是我目前的尝试,这是我的头文件中对象的类数据。 (没有 get/set 方法,因为这些方法与此问题无关。)
class SlidingPuzzle {
private:
int height;
int length;
int** theBoard = NULL;
public:
SlidingPuzzle();
SlidingPuzzle(int, int);
~SlidingPuzzle();
};
这是构造函数'SlidingPuzzle();'来自我的源文件
SlidingPuzzle::SlidingPuzzle() {
this->height = 3;
this->length = 3;
this->theBoard = new(int*[this->height]);
for (int i = 0; i < this->height; i++) {
this->theBoard[i] = new(int[this->length]);
}
for (int i = 0; i < this->height; i++) {
for (int j = 0; j < this->length; i++) {
this->theBoard[i][j] = 0;
}
}
}
this->theBoard[i][j] = 0; 处抛出异常
我在这里有什么功能吗?还是我这样做完全错误?
这是我正在制作的程序的重要组成部分,如果不解决这个问题,我真的无法继续。
编辑:错误是一个小错字
for (int j = 0; j < this->length; i++) {
this->theBoard[i][j] = 0;
}
不小心放了 i 而不是 j,导致超出范围,谢谢。
【问题讨论】:
-
每当您想到“动态数组”时,您下一个想到的应该始终是
std::vector。 -
顺便说一下,
new是一个运算符而不是一个函数,你不需要在类型周围加上括号。 -
这种方法可能值得考虑:stackoverflow.com/questions/53038457/…