最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

当前热议!6错误代码C3848.

来源:博客园


(资料图片)

C++错误C3848:具有类型“XXX”的表达式会丢失一些 const-volatile 限定符以调用“XXX”

问题:

在练习set容器时,对其做自定义顺序排序时出现错误

错误:

严重性代码说明项目文件行禁止显示状态错误C3848具有类型“const _Keycmp”的表达式会丢失一些 const-volatile 限定符以调用“bool myfunc::operator ()(int,int)”07set容器C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.35.32215\include\xmemory52

严重性代码说明项目文件行禁止显示状态错误C2056非法表达式07set容器C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.35.32215\include\xmemory51

#define _CRT_SECURE_NO_WARNINGS#includeusing namespace std;#include//multset也是这个头文件#include#includevoid test(){set::iterator it;it++;it--;//it + 2;err//双向迭代器}void printSet(set &s){for (set::iterator it = s.begin(); it != s.end(); ++it){cout << *it << " ";}cout << endl;}/*构造函数set st;//set默认构造函数:mulitset mst; //multiset默认构造函数:set(const set &st);//拷贝构造函数赋值操作set&operator=(const set &st);//重载等号操作符swap(st);//交换两个集合容器大小操作size();//返回容器中元素的数目empty();//判断容器是否为空插入和删除操作insert(elem);//在容器中插入元素。clear();//清除所有元素erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器。erase(beg, end);//删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。erase(elem);//删除容器中值为elem的元素。*/void test01(){set s;s.insert(4);s.insert(8);s.insert(2);s.insert(10);s.insert(7);//自身规则进行排序,从小到大printSet(s);}struct myfunc{bool operator()(int v1,int v2)//const{return v1 > v2;}};void printSet2(set &s){for (set::iterator it = s.begin(); it != s.end(); ++it){cout << *it << " ";}cout << endl;}//改变set容器的规则,变为降序(从大到小)void test02(){set s;s.insert(4);s.insert(8);s.insert(2);s.insert(10);s.insert(7);printSet2(s);}int main(){test02();system("pause");return EXIT_SUCCESS;}

解决:

结构体中函数加const

参考链接:

(9条消息) C++错误C3848:具有类型“XXX”的表达式会丢失一些 const-volatile 限定符以调用“XXX”_密苏里的小人物的博客-CSDN博客

关键词: