首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义_SCL_SECURE_NO_WARNINGS后X实用程序中的错误

定义_SCL_SECURE_NO_WARNINGS后X实用程序中的错误
EN

Stack Overflow用户
提问于 2014-12-19 12:39:52
回答 1查看 1.3K关注 0票数 0

我试图实现一个计算两个向量的点积的类。

代码语言:javascript
复制
float dotProduct(vec2 v1, vec2 v2)
{
    if (v1.Length() != v2.Length()) { return NULL; }

    return (float)std::inner_product(v1.x, v1.y, v2.x, 0.0);
}

当我把这件事复杂化的时候,我得到:

代码语言:javascript
复制
Error   1   error C4996: 'std::_Inner_product2': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\numeric  121

所以我加入了#define _SCL_SECURE_NO_WARNINGS

但是,我在x实用程序中得到了一堆错误。

代码语言:javascript
复制
Error   1   error C2825: '_Iter': must be a class or namespace when followed by '::'    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 371
Error   2   error C2039: 'iterator_category' : is not a member of '`global namespace''  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 371
Error   3   error C2146: syntax error : missing ';' before identifier 'iterator_category'   C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 371
Error   4   error C2602: 'std::iterator_traits<_InIt>::iterator_category' is not a member of a base class of 'std::iterator_traits<_InIt>'  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 371
Error   5   error C2868: 'std::iterator_traits<_InIt>::iterator_category' : illegal syntax for using-declaration; expected qualified-name   C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 371
Error   6   error C2825: '_Iter': must be a class or namespace when followed by '::'    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 372
Error   7   error C2039: 'value_type' : is not a member of '`global namespace'' C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 372
Error   8   error C2146: syntax error : missing ';' before identifier 'value_type'  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 372
Error   9   error C2602: 'std::iterator_traits<_InIt>::value_type' is not a member of a base class of 'std::iterator_traits<_InIt>' C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 372
Error   10  error C2868: 'std::iterator_traits<_InIt>::value_type' : illegal syntax for using-declaration; expected qualified-name  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 372
Error   11  error C2825: '_Iter': must be a class or namespace when followed by '::'    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 373
Error   12  error C2039: 'difference_type' : is not a member of '`global namespace''    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 373
Error   13  error C2146: syntax error : missing ';' before identifier 'difference_type' C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 373
Error   14  error C2602: 'std::iterator_traits<_InIt>::difference_type' is not a member of a base class of 'std::iterator_traits<_InIt>'    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 373
Error   15  error C2868: 'std::iterator_traits<_InIt>::difference_type' : illegal syntax for using-declaration; expected qualified-name C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 373
Error   16  error C2825: '_Iter': must be a class or namespace when followed by '::'    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 375
Error   17  error C2039: 'pointer' : is not a member of '`global namespace''    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 375
Error   18  error C2146: syntax error : missing ';' before identifier 'pointer' C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 375
Error   19  error C2602: 'std::iterator_traits<_InIt>::pointer' is not a member of a base class of 'std::iterator_traits<_InIt>'    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 375
Error   20  error C2868: 'std::iterator_traits<_InIt>::pointer' : illegal syntax for using-declaration; expected qualified-name C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 375
Error   21  error C2825: '_Iter': must be a class or namespace when followed by '::'    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 376
Error   22  error C2039: 'reference' : is not a member of '`global namespace''  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 376
Error   23  error C2146: syntax error : missing ';' before identifier 'reference'   C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 376
Error   24  error C2602: 'std::iterator_traits<_InIt>::reference' is not a member of a base class of 'std::iterator_traits<_InIt>'  C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 376
Error   25  error C2868: 'std::iterator_traits<_InIt>::reference' : illegal syntax for using-declaration; expected qualified-name   C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 376
Error   26  error C2665: 'std::_Debug_range2' : none of the 2 overloads could convert all the argument types    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility 584
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-19 13:06:10

检查文件

product

您传递的是值,而不是迭代器。这个函数可以为更长的向量创建乘积,所以它需要数据的开始和结束,试试这个;

代码语言:javascript
复制
std::inner_product(v1.begin(), v1.end(), v2.begin(), 0.0);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27566406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档