定义_SCL_SECURE_NO_WARNINGS后 Xutility 中的错误
Errors in Xutility after defining _SCL_SECURE_NO_WARNINGS
我正在尝试实现一个用于计算两个向量的点积的类。
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);
}
当我遵守这一点时,我得到:
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.0VCincludenumeric 121
所以我补充#define _SCL_SECURE_NO_WARNINGS
但是后来我在 xutility 中遇到了一堆错误
Error 1 error C2825: '_Iter': must be a class or namespace when followed by '::' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 371
Error 2 error C2039: 'iterator_category' : is not a member of '`global namespace'' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 371
Error 3 error C2146: syntax error : missing ';' before identifier 'iterator_category' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 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.0VCincludexutility 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.0VCincludexutility 371
Error 6 error C2825: '_Iter': must be a class or namespace when followed by '::' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 372
Error 7 error C2039: 'value_type' : is not a member of '`global namespace'' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 372
Error 8 error C2146: syntax error : missing ';' before identifier 'value_type' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 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.0VCincludexutility 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.0VCincludexutility 372
Error 11 error C2825: '_Iter': must be a class or namespace when followed by '::' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 373
Error 12 error C2039: 'difference_type' : is not a member of '`global namespace'' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 373
Error 13 error C2146: syntax error : missing ';' before identifier 'difference_type' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 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.0VCincludexutility 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.0VCincludexutility 373
Error 16 error C2825: '_Iter': must be a class or namespace when followed by '::' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 375
Error 17 error C2039: 'pointer' : is not a member of '`global namespace'' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 375
Error 18 error C2146: syntax error : missing ';' before identifier 'pointer' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 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.0VCincludexutility 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.0VCincludexutility 375
Error 21 error C2825: '_Iter': must be a class or namespace when followed by '::' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 376
Error 22 error C2039: 'reference' : is not a member of '`global namespace'' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 376
Error 23 error C2146: syntax error : missing ';' before identifier 'reference' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 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.0VCincludexutility 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.0VCincludexutility 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.0VCincludexutility 584
查看文档
http://en.cppreference.com/w/cpp/algorithm/inner_product
您传递的是值而不是迭代器。 此功能可以为更长的向量创建乘积,因此它需要数据的开始和结束,请尝试此操作;
std::inner_product(v1.begin(), v1.end(), v2.begin(), 0.0);
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- 当xutility错误发生时,我必须做什么
- 定义_SCL_SECURE_NO_WARNINGS后 Xutility 中的错误
- 使用C++strtk会导致一个xutility错误C4996
- 修复xutility的错误
- 错误 C2582: 'operator ='函数不可用。(xutility)
- xutility 的错误(<chrono> <random> C++标准库)