Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++中无法从向量中检索项目的PooTeC索引_C++_Visual Studio 2010_Vector - Fatal编程技术网

在C++中无法从向量中检索项目的PooTeC索引

在C++中无法从向量中检索项目的PooTeC索引,c++,visual-studio-2010,vector,C++,Visual Studio 2010,Vector,在Visual Studio'12中获取以下编译错误 error C3867: 'std::vector<_Ty>::at': function call missing argument list; use '&std::vector<_Ty>::at' to create a pointer to member line 39 代码 你需要括号,而不是括号。at是一个成员函数 你需要括号,而不是括号。at是一个成员函数。Vector2dVector::at很

在Visual Studio'12中获取以下编译错误

error C3867: 'std::vector<_Ty>::at': function call missing argument list; use '&std::vector<_Ty>::at' to create a pointer to member line 39
代码

你需要括号,而不是括号。at是一个成员函数

你需要括号,而不是括号。at是一个成员函数。

Vector2dVector::at很可能是一个函数,而不是数组类型的字段:

    Vector2d vec2 = mVertices.at(i);  //Line 39 
Vector2dVector::at很可能是一个函数,而不是数组类型的字段:

    Vector2d vec2 = mVertices.at(i);  //Line 39 

问题是您在此处输入了一个错误:

Vector2d vec2 = mVertices.at[i];  //Line 39 
                            ^ ^
您应该使用with std::vector::at方法调用,而不是[]:

另一种方法是使用std::vector::operator[]重载,而不是at:

区别在于std::vector::at对向量索引进行边界检查,如果索引超出范围,则抛出异常std::out_of_range以防止缓冲区溢出

相反,如果使用std::vector::operator[],则边界检查将被禁用

换句话说,使用std::vector::operator[]可以获得更快的代码,但没有对向量索引进行运行时检查,因此必须注意索引,以避免危险的缓冲区溢出


更准确地说,在Visual Studio中,如果设置为1,则std::vector::operator[]也会进行边界检查。

问题是您在此处输入了一个拼写错误:

Vector2d vec2 = mVertices.at[i];  //Line 39 
                            ^ ^
您应该使用with std::vector::at方法调用,而不是[]:

另一种方法是使用std::vector::operator[]重载,而不是at:

区别在于std::vector::at对向量索引进行边界检查,如果索引超出范围,则抛出异常std::out_of_range以防止缓冲区溢出

相反,如果使用std::vector::operator[],则边界检查将被禁用

换句话说,使用std::vector::operator[]可以获得更快的代码,但没有对向量索引进行运行时检查,因此必须注意索引,以避免危险的缓冲区溢出


更准确地说,在Visual Studio中,如果设置为1,则std::vector::operator[]也会进行边界检查。

好的,我同意这是一个愚蠢的问题。我以为Visual Studio 2012的Intelissense会就此警告我。我认为这不是一个愚蠢的问题:我们每个人都曾经是初学者!:享受学习。好吧,我同意这是一个愚蠢的问题。我以为Visual Studio 2012的Intelissense会就此警告我。我认为这不是一个愚蠢的问题:我们每个人都曾经是初学者!:享受学习。
Vector2d vec2 = mVertices.at(i);  //Line 39 
Vector2d vec2 = mVertices[i];