这个问题已经在这里有了答案:
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);
现在应该可以工作了。