锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源社区 / error C2510:“_Container”:“::”的左边必须是类/结构/联合

服务方向

人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
量化预测
股票离线分析软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发

联系方式

固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品原创,禁止转载和任何形式的非法内容使用,违者必究。点名“简易百科”和“闲暇巴”盗用锐英源原创内容。


error C2510:“_Container”:“::”的左边必须是类/结构/联合


transform语句使用时出error C2510:"_Container":"::"的左边必须是类/结构/联合这个错误,但是明显transform里没有左边这一说啊。其实这个左是STL库内部代码的问题,不是调用STL库的语句行的问题。出错的代码如下:

	wstring supper;
	WORD wrLen;
    WCHAR cTest[256];
	transform(supper.begin(), supper.end(), std::back_inserter(cTest), toupper);

提示左边必须是类/结构/联合,真实的意思是遇到的不是类/结构/联合,所以检查代码里cTest是指针,不行。

因为STL报错是不会定位到错误代码上,是定位到STL代码里,VS2022里也是这样。所以新手很难查,因为自己加的代码,能够定位到上面部分,所以改成:

	    WCHAR cTest[256];
	wstring supper,sTest=cTest;
	WORD wrLen;
	transform(supper.begin(), supper.end(), std::back_inserter(sTest), toupper);

按上面意思,原来想指针能够直接转换wstring,结果不能,自己转换后,再放到transform里,问题解决。问题原因是back_inserter里不能为指针,STL函数里要带STL对象,如果不是STL对象,就不是Container容器范畴类的,就会报错。

友情链接
版权所有 Copyright(c)2004-2024 锐英源软件
统一社会信用代码:91410105098562502G 豫ICP备08007559号 最佳分辨率 1440*900
地址:郑州市金水区文化路97号郑州大学北区院内南门附近