![]() |
1
40
如果成员函数是静态的,则可以这样做。
类A的非静态成员函数具有类型为的隐式第一个参数
|
![]() |
2
14
如果成员函数不是静态的,也可以这样做,但它需要更多的工作(另请参见 Convert C++ function pointer to c function pointer ):
此示例在编译时是完整的:
你需要
|
![]() |
3
7
问题是这个方法!=函数。编译器会将您的方法转换为如下类型:
所以,它肯定不能传递它,因为类实例不能作为参数传递。解决方法之一是使方法成为静态的,这样它将具有良好的类型。但它不会有任何类实例,也不会访问非静态类成员。 另一种方法是声明一个带有静态指针的函数,该指针指向第一次初始化的。函数只将调用重定向到类:
然后您可以注册回调函数。 |
![]() |
4
5
嗯……如果你在一个Win32平台上,总会有一种令人讨厌的雷鸣般的方式…… Thunking in Win32: Simplifying callbacks to non-static member functions
这是一个解决方案,但我不建议使用它。
|
![]() |
5
1
使用成员函数的问题在于,它需要一个对象来对其进行操作,而C不知道对象。 最简单的方法是:
|
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 4 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 4 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 4 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 4 月前 |