【发布时间】:2011-01-13 19:53:00
【问题描述】:
我正在使用函数指针 typedef'd:
typedef int(*ptr2Func)();
一个函数,当给定一个数字时,它将为一个已经声明的函数选择一个函数指针。
ptr2Func getPtr2Func(int function);
所以如果你使用 getPtr2Func(1);你得到一个指向第一个函数的函数指针。
但是我现在想做完全相反的事情:将函数指针引用传递给函数,该函数又将返回函数的编号。 即:我有 4 个测试功能,除了显示一条消息之外什么都不做。 如果 getPtr2Func(1);被调用,得到一个指向function1的函数指针。
我可以这样做吗: int getFuncNum(ptr2Func*& func);
从而得到这个函数指针指向的函数的编号?假设我知道所有映射到给定 getPtr2Func 的数字的函数,我可以使用 switch case 或多个 if-else 来查找这些函数的哪个地址与作为参数传递的函数指针匹配,不是吗?
另外,这样做的正确语法是什么?
提前致谢! :)
编辑:
没关系,我找到了答案……
按原样传递并比较地址...
typedef int(*ptr2Func)();
int findFunc(ptr2Func func){ if (func == &test1){ return 1; } }
适用于我所做的一些小测试...(test1() 是一个函数...)不知道是否有更有效或更安全的方法来执行此操作...
【问题讨论】:
标签: c++ function-pointers