首页 > 解决方案 > C++,如何在面向对象编程中制作动态大小的二维数组?

问题描述

我目前正在使用 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,导致它超出范围,谢谢。

标签: c++arrays

解决方案


这个循环是错误的。

for (int j = 0; j < this->length; i++) {

你必须增加j,而不是i


推荐阅读