【问题标题】:Error when creating an array: Expression must have constant value [duplicate]创建数组时出错:表达式必须具有常量值[重复]
【发布时间】:2020-08-11 19:49:16
【问题描述】:

我正在编写使用 Hu Moment 提取功能识别手势的代码,从这里 enter link description here 但我在声明数组时遇到了问题

int matchTheState(vector<Point> present_hand_state, vector<vector<Point > > MyContours)
{
double array[MyContours.size()];

vector&lt;vector&lt;point&gt;&gt; MyContours 的内容是用作比较值的图像声明。

错误说:

expression must have constant value (cannot call non-constecxpr function...)
function call must have a constant value in a constant expression

【问题讨论】:

    标签: c++ opencv visual-c++ opencv3.0


    【解决方案1】:

    在 C++ 中,数组边界必须是编译时常量。 MyContours.size() 不是编译时间常数。只需使用矢量即可。

    vector<double> array(MyContours.size());
    

    【讨论】:

    • 是的,它可以消除错误。但是当我开始调试时,会出现一个通知,调试断言失败!向量下标超出范围。
    • @RirisEkaS 好的,这只是意味着您的代码中有错误。由于我看不到代码,所以我无法说出错误是什么。如果您无法弄清楚,请提出一个新问题并包含崩溃的代码。
    • 我可以把整个代码发给你吗?所以你可以告诉我这个错误是什么。先生,如果您想帮助我会很高兴:(
    • 先生,这是我关于调试问题的新问题stackoverflow.com/questions/61474002/…
    猜你喜欢
    • 2016-09-22
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多