c++ 函数指针调用函数的问题

2025-05-12 21:30:35
推荐回答(2个)
回答(1):

这题我仔细看了下,因为好久没看C语言的程序了,有点陌生呢!
不过我发现问题了,你看啊:
place=LocateElem(cur_e,equal); //这里是140行
这里你调用equal了,但是现在equal是什么呢?它存在吗?我试了下,把equal函数写成静态的,或者在类外面定义equal的话,这里都不会有错,这说明什么呢?equal,作为一个类的内部方法,在这个类没实例化对象的时候,它是不存在的,这样说我自己都感觉不大对,但是要是这样想,equal,作为一个函数指针(指针也是变量啊),它是这个类内部的一个变量,在这个类没实例化对象的时候,它是没有意义的。这样好像可以说得通,到底对不对,还请真正的高手指教!

PS:关于上面程序的修改:
static cmp equal; //定义比较函数:相等
即在声明equal的时候前面加上static,使它变成静态的,其它的地方都不用改了

回答(2):


typedef bool cmp(int,int);
修改为
typedef bool (*cmp)(int,int);