leetcode179题中编译出现则个问题
出错的代码:
class Solution {
public:bool cmp1(const int& a, const int& b){string s1=to_string(a);string s2=to_string(b);string ans1=s1.append(s2);string ans2=s2.append(s1);return ans1>ans2;}string largestNumber(vector<int>& nums) {sort(nums.begin(),nums.end(),cmp1);string ans="";int len1=nums.size();if(nums[0]==0){return "0";}for(int i=0;i<len1;++i){ans.append(to_string(nums[i]));}return ans;}
};
我本来想自定义compare函数传入sort中,但却报错。
error: reference to non-static member function must be called sort(nums.begin(),nums.end(),cmp1);
原因是我把cmp1函数写在类里面,普通的成员函数都有一个隐含的this指针,表面上看cmp1只有两个参数,但实际上它有三个参数,而调用sort()排序函数的时候只需要用到两个参数进行比较,所以就出现了形参与实参不匹配的情况(函数有三个形参,但是只输入了两个实参)。
解决方法:
把cmp1移出类外