int main(){
int sample_rate = 50;
int t_max = 60*5 ;
int dimensions = 3;
int num_samples = sample_rate * t_max;
double data[dimensions][num_samples] = { { } }; //Error here
return 0;
}
据我所知,一个数组对堆大小必须在编译时这是这里(3×15000)是已知的。为什么我仍然收到错误消息?
答案 0 :(得分:5)
只需使用std::vector
。
#include <vector>
int main(){
int sample_rate = 50;
int t_max = 60*5 ;
int dimensions = 3;
int num_samples = sample_rate * t_max;
std::vector<std::vector<double>> data(dimensions, std::vector<double>(num_samples));
// access data like this
data[0][0];
return 0;
}
答案 1 :(得分:3)
根据[dcl.array]/1,指定数组的边界(大小)必须为常量表达式。
您指定的边界不是常量表达式。要将它们转换为此类,您必须在声明这四个整数之前,先加const
或constexpr
(从C ++ 11开始)
const int sample_rate = 50;
或
constexpr int sample_rate = 50;