2

有没有办法将具有可变大小的任何类型的数组初始化为零?所以我想要的是应用这样的东西:

int results[5] = {};

到这样的模板:

T results[i] = {};

当我尝试这个时,我的编译器会这样说:'results' declared as array of functions of type 'T ()'. 当我使用任何固定类型名时,我会收到此错误:Variable-sized object may not be initialized

也是i调用此函数时传入的变量。

4

1 回答 1

2

可变长度数组在 C++ 中是非标准的,您的编译器支持它们作为扩展。您的编译器还告诉您扩展的限制:可变长度数组可能没有初始化程序。作为一种解决方法,您可以这样做:

int results[i];
std::fill(results, results + i, 0);

当然,更好的方法是使用std::vector这样你就不用依赖任何非标准的扩展了。

于 2019-12-19T21:29:02.423 回答