我想将类函数作为C函数的参数传递 在帕斯卡尔。它是通过关键字(对象的过程)实现的,因此编译器将负责这个'这个'参数。 但在c ++中似乎很复杂。
#include <stdio.h>
typedef void (*func)(void);
class Class{
public:
void sub(void)
{
printf("Foo");
}
};
void test(func f)
{
f();
}
int main()
{
Class c;
test(c.sub);
}
答案 0 :(得分:3)
您需要使用该函数来获取通用函数类型,或者将其作为模板:
template <typename F>
void test(F f) {
f();
}
或使用类型擦除:
#include <functional>
void test(std::function<void()> f) {
f();
}
然后使用std::bind
或lambda将成员函数绑定到对象:
test(std::bind(&Class::sub, &c));
test([&]{c.sub();});