y3d*_*3di 9 c++ arrays vector visual-studio
可能重复:
有没有办法用非常量变量初始化数组?(C++)
我有以下代码:
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的.
Naw*_*waz 13
vec2 vPoints[myLines];
由于myLines不是const表达式((这意味着它在编译时不可知),所以上面的代码声明了一个C++中不允许的可变长度数组.只有C99具有此功能.您的编译器可能将此作为扩展(但这不是标准C++).
这种共同问题的解决方案是:std::vector<T>用作:
std::vector<vec2> vPoints(myLines);
它现在应该工作.
是因为myLines可能是负面的吗?
不,这是因为myLines它不是编译时常量.
说明:
vec2 vPoints[myLines];
创建一个可变长度的数组,其中myLinesvalue将在运行时确定.
C++中不允许使用可变长度数组.这是C99中引入的一个功能,而C++标准不支持它.一些C++编译器支持它作为扩展,但它仍然是非标准的符合.
对于C++,数组的大小应该在编译时知道,因此必须是编译时常量.myLines不是编译时常量,因此是错误.
你应该使用std :: vector
| 归档时间: | 
 | 
| 查看次数: | 44941 次 | 
| 最近记录: |