如何使函数返回的数字用于定义数组中的元素?

时间:2013-01-01 20:01:31

标签: c++ opencv const

我正在使用Opencv / c ++。 我使用该函数获取视频中的帧数 int noOfFrames = cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_COUNT );

我还声明了一个数组int Entropy[noOfFrames];。但由于变量noOfFrames是非常量的,因此会产生错误。

我甚至使用了const_cast,但它仍然会出错。我希望数组的长度等于视频的帧数。

我该怎么办?

2 个答案:

答案 0 :(得分:6)

您无法声明具有动态大小的静态数组。你需要一个动态数组:

int* Entropy = new Entropy[noOfFrames];

// use here, same as array

delete[] Entropy;

但使用矢量更容易:

std::vector<int> Entropy(noOfFrames);

// use here, same as array and more

// no need to clean up, std::vector<int> cleans itself up

答案 1 :(得分:5)

在C ++中,你不能这样做,因为c风格数组的大小应该是编译时常量 1

无论如何,你有一个更好的选择:使用std::vector

std::vector<int> Entropy(noOfFrames);

即使你有编译时常量,我也不建议你使用c-style数组的int arr[size]。相反,我建议你使用std::array<int,size> arr;,这也是更好的解决方案。