这个问题已经在这里有了答案:




9年前关闭。






我有以下代码:

vector<vector<vec2>> vinciP;
    int myLines = -1;
    myLines = drawPolyLineFile("vinci.dat", vinciP);
    if (myLines > -1)
    {
        cout << "\n\nSUCCESS";
        vec2 vPoints[myLines];
        for (int i = 0; i < NumPoints; ++i)
        {
            vPoints[i] = vinciP[0][i];
        }
    }

我在“vec2 vPoints [myLines];”行遇到错误表示表达式必须具有恒定值。我不明白为什么会收到此错误,有什么帮助吗?

是因为myLines可能为负数吗? idk。

最佳答案

vec2 vPoints[myLines];

由于myLines不是const表达式((这意味着在编译时未知),因此上面的代码声明了一个可变长度数组,这在C++中是不允许的。只有C99才具有此功能。扩展(但不是标准C++)。

解决此类常见问题的方法是:使用std::vector<T>作为:
std::vector<vec2> vPoints(myLines);

现在应该可以工作了。

08-27 01:35