【发布时间】:2015-06-29 09:00:03
【问题描述】:
在this answer 中,用户报告说他的g++ 版本可以编译VLA,在this question 中也是如此。在我的编译器上这也有效(有那个扩展名),但是如果我想将这样的数组声明为类成员,例如 position 和 velocity in
class PSO
{
private:
static double * data;
static int len;
static int dim;
double position [dim];
double velocity [dim];
double get_min();
double get_max();
void copy_data(double data *);
//...
它不编译。这是什么原因?为什么编译器扩展允许在 main 函数中使用 VLA,但不允许在类成员的声明中使用 VLA?
附录
我使用的是 gcc 4.8.2
编辑
我知道我应该使用std::vector 或指针,但我想知道为什么它会在主函数中编译而不是在类声明中。
编辑 2
要清楚,这是编译(在我的情况下)
int main()
{
int size;
double data [size];
size = 5;
return 0;
}
这与我展示的其他问题完全不同,因为我在数组声明之前没有std::cin >> size 语句。其他人的编译器中有这个(怪癖)吗?
【问题讨论】:
标签: c++ arrays class c++11 g++