萌新求助,如何在class里面封装cmp函数
查看原帖
萌新求助,如何在class里面封装cmp函数
679749
takanashi_mifuru楼主2023/8/27 22:07

刚学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没法搬出去。

2023/8/27 22:07
加载中...