刚学SA想封装一个class,其中排序用的cmp我是这么写的。
bool cmp(int a,int b){
return rnk[a]<rnk[b]||rnk[a]==rnk[b]&&rnk[a+now]<rnk[b+now];
}
看上去没什么问题,但是在 class 里面调用就出现问题了。
P3809.cpp: In member function ‘void SA::getsa()’:
P3809.cpp:20:30: error: invalid use of non-static member function ‘bool SA::cmp(int, int)’
20 | sort(sa+1,sa+1+n,cmp);
| ^~~
P3809.cpp:11:10: note: declared here
11 | bool cmp(int a,int b){
| ^~~
上面是报错信息,我拿着这玩意去百度了一下,百度让我在前面加个static,我加了,他表示rnk他没找到...
那这玩意应该是怎么样来封装才能用啊,rnk肯定要在封装的SA里面所以这个cmp没法搬出去。