最近做leetcode两次遇到了这个报错:
invalid use of non-static member function ‘bool Solution::cmp(std::vector, std::vector)’
因为将cmp函数作为类函数,并在类中通过sort()调用了cmp函数。此时cmp函数需要通过一个该类的对象才可以调用。但是sort中并不会为该类生成对象,所以报错。
解决方法:
1、把cmp函数写成全局的。
2、把cmp函数改成静态成员函数(加一个static),就可以不通过对象调用了。
3、把cmp函数写成lambda函数,如下:
sort(envelopes.begin(),envelopes.end(),[](vector<int> a,vector<int> b){return a[0]<b[0];});