【发布时间】:2018-03-14 04:12:06
【问题描述】:
我正在开发一个程序,对于其中一个类,我将宽度和高度传递给构造函数,然后构造函数使用它们来初始化一个数组以临时保存一些数据。
class NoiseDrawable : public Drawable {
public:
NoiseDrawable(const int width, const int height, Color color) : Drawable(width, height) {
float heightMap[width][height];
....
现在的问题是我在使用宽度和高度初始化数组时遇到错误:
expression must have constant value
现在我明白我为什么会收到这个错误了,这完全有道理。我不明白的是为什么即使将传递的整数更改为常数后我仍然得到它!
我该如何解决这个问题?
【问题讨论】:
-
VLA 不是标准的 C++。请改用
std::vector。 -
呃,我开始猜测太多了,但希望避免使用向量,因为处理二维数据会很麻烦
-
您可以使用
std::vector<std::vector<float>> heightMap(width,std::vector<float>(height)); -
一维向量很容易使用,并且像二维一样访问它也非常容易。 "size_t 1d_IndxFrom(int r, int c) { return static_cast
((r * maxCol) + c); }"