有人可以帮我解释一下吗:

我在头文件中声明一个常量:

const int INCRSIZE;

然后在MIL中初始化常量:
: INCRSIZE(10)

然后稍后在代码中的函数中(其在gtkmm-GUI中使用的回调函数
 bool MyWindow::on_drawing_expose_event(GdkEventExpose* event)

我使用此常量在堆栈上分配一个数组
double arrPxStep[INCRSIZE];

编译时出现以下错误:
-expected constant expression
- cannot allocate an array if constant size 0
- arrPxStep unknown size

我知道常量已初始化-数组为什么不能使用已在MIL中初始化的常量memeber-variable?

最佳答案

根据您发布的代码的外观,INCRSIZE是类的非静态成员。即使该值在构造函数中始终设置为相同,也不能使用它来初始化数组。这只是规则。

使INCRSIZE成为在类中定义的静态const成员,它将起作用。

09-07 11:10