创建一个n×n网格,其中每个元素都是指向对象的指针

时间:2017-10-07 03:20:33

标签: c++ pointers multidimensional-array

class ClassName {
    A* grid[][];
}

我得到''grid'的声明,因为多维数组必须包含除第一个“错误之外的所有维度的边界。问题是我在运行程序之前不会知道维度,其中大小是其中一个参数。

指令声明网格的每个元素都应该是A * - 即指向A类对象的指针。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以选择以这种方式定义gridA*** grid;。当然,您必须使用此设置动态分配内存:

class ClassName {
    A*** grid;
    int nCols, nRows;

public:
    ClassName(int cols, int rows) {
        nCols = cols;
        nRows = rows;

        grid = new A**[nCols];
        for (int i = 0; i < nCols; i++) {

            grid[i] = new A*[nRows];
            for (int j = 0; j < nRows; j++) {

                grid[i][j] = nullptr;
            }
        }
    }

    ~ClassName() {
        for (int i = 0; i < nCols; i++) {
            delete[] grid[i];
        }

        delete[] grid;
    }
};