gpt4 book ai didi

C++类构造函数二维数组内存分配

转载 作者:行者123 更新时间:2023-11-28 00:20:06 25 4
gpt4 key购买 nike

出于好奇,我这学期在大学上了一门编程课。我们正在使用 C++,我非常喜欢它,但过去两周对我来说相当艰难,这让我感到困扰:

我得到了一个类接口(interface),如下所示:

class GameOfLife(int rows, int cols);
public:
GameOfLife();
void clear();
void set(int row, int col, int value);
void set(int row, int col, const char* values);
int get(int row, int col);
void print();
void advance();
};

我被要求做的第一件事是实现构造函数,以便它根据参数中传递的行数和列数为板分配内存。我以为我了解构造函数,但是有了这个我就迷路了。在我在私有(private)部分声明 int rows 和 cols 之后,我想到了一些类似的东西

GameOfLife::GameOfLife(int x, int y){
rows = x;
cols = y;
board = new int* [rows];

但是我既不知道如何在编译器不对我大喊大叫的情况下处理电路板的第二个维度,也不知道如何测试新内存是否实际分配正确。有什么帮助吗? :(

提前致谢!

最佳答案

除了thumbmunkey的correct answer ,请注意,仅仅因为外部接口(interface)规定了二维数组并不意味着内部接口(interface)必须匹配。

你可以:

int* board = new int[rows * cols];

然后在哪里而不是 get() 返回:

return board[x][y];

它应该是:

return board[x * rows + y];

有时一个数组比两个数组更容易考虑。有时不是。取决于你想怎么做(或者如果规定你必须使用一种方法或另一种方法)。

关于C++类构造函数二维数组内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27933843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com