gpt4 book ai didi

c++ - 如何在类中有一个二维数组作为私有(private)变量,然后在构造函数中设置

转载 作者:太空宇宙 更新时间:2023-11-04 15:34:38 25 4
gpt4 key购买 nike

在我用 Visual C++ 编写的平台游戏中,每个关卡最初都存储为二维整数数组。我认为将这个数组存储在一个类中更有意义,因此我创建了一个名为 Level 的类。它看起来像这样:

class Level {
private:
int map[20][30];
public:
Level(int a[20][30]) {
map = a;
}
int getcell(int row, int column) {
return map[row][column];
}
};

据我所知 - 从查找关于类构造函数的教程,并将二维数组作为参数传递,这应该可行,所以我真的不明白为什么不行。
在我执行 map = a 的那一行,我得到一个错误:Error: expression must be a modifiable lvalue。我在 stackoverflow 上查看了这个错误,但找不到与我的问题相关的任何答案。
那么,我该如何解决这个错误呢?

最佳答案

这实际上与构造函数没有任何关系。您不能在 C++ 中分配数组。无论是在构造函数中,还是在其他任何地方。

有两种方法可以解决这个问题。第一种方式是蛮力方式。而不是

map = a;

编写一个循环,将数组的内容从构造函数的参数复制到类成员数组中。

第二种方式是把数组塞进一个中间类:

class Level {

public:
struct level_map {
int map[20][30];
};
private:
level_map map;
public:
Level(const level_map &initial_map) : map(initial_map)
{
}
int getcell(int row, int column) {
return level_map.map[row][column];
}
};

这可能实用也可能不实用,并且会引入更多的复杂性。

但真正的答案是使用 std::vector 而不是普通数组,这将解决所有这些问题。

关于c++ - 如何在类中有一个二维数组作为私有(private)变量,然后在构造函数中设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37732307/

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