【C++编程语言】严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C3848 具有类型“const MyCompare”的表达式会丢失一些 const-volatile 限定符以调用“bool

问题描述:把set容器的内置排序算法改变时,使用仿函数 但是出现了一下错误

修改前

//set容器排序
class MyCompare {
public:
	bool operator()( int v1,  int v2) {
		return v1 > v2;
	}
};

void test01() {
	//指定排序规则为从大到小
	set<int,MyCompare> s2;

	//插入数据
	s2.insert(40);
	s2.insert(50);
	s2.insert(20);
	s2.insert(10);
	for (set<int, MyCompare>::iterator it = s2.begin(); it != s2.end(); it++) {
		cout << *it << endl;
	}
}
int main() {
	test01();
	system("pause");
	return 0;
}

以上代码出现一下错

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C3848 具有类型“const MyCompare”的表达式会丢失一些 const-volatile 限定符以调用“bool
MyCompare::operator ()(int,int)” Project02 E:\develop\visual studio\visual
studio\VC\Tools\MSVC\14.32.31326\include\xutility 1451

修改后 加const

class MyCompare {
public:
	bool operator()( int v1,  int v2) const{//在这里加const
		return v1 > v2;
	}
};
  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: 这个问题是关于一个文件禁止显示错误(活动e0144),错误信息显示是由于将“const char *”类型的值用于初始化“char *”类型的实体,因此不能用于初始化“char *”类型的实体,这是类型不匹配。 ### 回答2: 这个错误是因为在代码中出现了定义常量字符指针(const char *)并试图将其赋值给字符指针(char *)类型变量的错误。常量字符指针指向的字符串是只读的,不能被修改,而字符指针可以被修改。 当定义一个字符指针时,分配了一块内存区域来存储指向字符串的地址,如果试图将常量字符指针指向的字符串赋值给字符指针,就相当于将只读的字符串赋值给了一个可写的内存区域,出现错误。 为了避免这种错误,应该在定义字符指针时,使用const关键字来声明指向常量的字符指针,或者使用strcpy等函数来复制常量字符串到字符数组中。也可以使用类型转换来将const char *类型转换为char *类型。 例如,以下代码导致e0144错误const char *str = "hello world"; char *ptr = str; 应该修改为以下代码const char *str = "hello world"; const char *ptr = str; // 或者 char buffer[20]; strcpy(buffer, str); char *ptr = buffer; // 或者 char *ptr = const_cast<char *>(str); ### 回答3: 这个错误提示通常出现在C++中,在进变量初始化的时候出现类型不匹配。在这个错误提示中,我们可以看到是由于const char*类型的值试图初始化char*类型的实体所导致的错误。这个错误提示的代码严重性代码“e0144”,在C++中,表示一个无法编译的错误。 要理解这个错误提示,我们需要先了解一下C++中的const关键字及char指针类型。在C++中,const关键字表示的变量是不可修改的,相当于只读变量。而char指针类型表示一个指向char类型数据的指针,指针本身的值是一个地址。因此,const char*类型的指针是指向一个只读的char类型数据所在的地址。 而在这个错误提示中,我们尝试将一个只读的char类型数据所在地址的指针,赋值给一个非只读的char类型变量,因此出现了类型不匹配的错误。要解决这个问题,我们可以将变量的类型从char*更改为const char*,或者将赋值的内容改为可更改的char类型数据。 总之,在C++编程中,遵守类型匹配原则是至关重要的,只有正确地匹配应用程序中的不同类型,才能避免类似的错误,保证程序的正确性和安全性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unknown To Known

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值