error C2780: “void std::sort(const _RanIt,const _RanIt)”: 应输入 2 个参数,却提供了 3 个

本文解决了在Visual Studio 2017中遇到的C++编译错误,包括有符号/无符号比较、非标准语法使用、std::sort函数参数错误等问题,并提供了一种将成员函数作为参数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

- 1.错误

warning C4018: “<”: 有符号/无符号不匹配
error C3867: “Solution::cmp”: 非标准语法;请使用 “&” 来创建指向成员的指针
error C2672: “std::sort”: 未找到匹配的重载函数
error C2780: “void std::sort(const _RanIt,const _RanIt)”: 应输入 2 个参数,却提供了 3 个
note: 参见“std::sort”的声明
1>已完成生成项目“Project1.vcxproj”的操作 - 失败。

VS2017运行出错:
在这里插入图片描述

2.修改方法

要想取类成员函数作为参数,该函数需要是static的,成员函数第一个参数默认是this指针, 加static 静态函数就没有this指针了。

public:
	static bool cmp(string& s1, string& s2)
	{
		return s1 + s2 < s2 + s1;
		//if( s1 + s2 < s2 + s1)return ;
	}

尝试把这个比较函数写在类的外面,重写了一个cm()的比较函数在可以编译通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值