函数指针的定义
Definition of Function Pointers
我正在使用一个sdk,在那里我必须定义一个回调函数,问题是,"示例"代码附带全局函数和非常过程化的方法。为了将其带入结构,我创建了类。但是,在定义和声明参数时,我无法获得正确的参数语法O_o
这是我的工作示例:
In my code.h:void (*MessageHandler)(int msgType, char* msg){printf("n%sn", msg);}
这个工作得很好,当我在代码中调用。cpp
void (*opFunc)(int msgType, char* msg) = MessageHandler;
但是我想在我的cpp中做定义,我找不到语法,通常它应该是:
void (*Code::MessageHandler)(int msgType, char* msg){
printf("n%sn", msg);
}
但是这不起作用,我找不到任何提示如何修复它。如果能得到提示就好了!
既然它是一个函数,那么就像对任何函数那样定义它:
void Code::MessageHandler(int msgType, char* msg){
printf("n%sn", msg);
}
它的名字Code::MessageHandler
实际上是一个正确类型的函数指针。如果Code
是namespace
,这就像预期的那样工作,如果它是class
,您必须声明它为static
以获得未绑定的引用。
另外,考虑使用typedef
来使源代码更易于阅读。
看起来你正试图在你的Code
类中定义一个函数指针?您可以创建一个函数(静态成员或全局函数),并使用该函数的名称作为指针。
void Code::MessageHandler( int msgType, char* msg ){
printf( "n%sn", msg );
}
// Create a function pointer called fn to point at a static function
void (*fn)( int, char * ) = &Code::MessageHandler;
再次注意,如果MessageHandler不是静态函数,这将不起作用,否则您将处理成员函数指针,这与函数指针非常不同。
如果你想让Code::MessageHandler
本身是一个函数指针,那么你应该在构造时将它赋值给一个全局函数。
相关文章:
- 用户定义函数中的指针和输入
- 使用"Task"函数指针队列定义作业管理器
- 通过函数指针定义类范围之外的方法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 如何重新定义 C++ 指针函数?
- 返回对未定义指针的引用
- 为什么此自定义指针类会崩溃?
- 如何定义指针铸件操作员
- 定义指针随机崩溃该程序
- 在不同的文件(C++)中定义指针数组长度
- 如何定义指针和动态内存分配的模板
- 具有自定义指针类型的unique_ptr:*get() 和运算符*() 给出不同的输出
- 定义指针时不显示输出;
- 自定义指针类型和容器/分配器类型定义
- 并排定义指针和类型问题
- 具有自定义指针类型的内存分配器
- 正在对unordered_set的自定义指针类型进行哈希处理
- 查找全局定义指针指向的地址,该地址使用了堆分配
- 如何有效地计算已定义指针的数量
- 用户定义指针队列中的分段错误