如何(pascal:对象的过程)在c ++中

时间:2015-04-14 08:42:20

标签: c++

我想将类函数作为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);
}

1 个答案:

答案 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();});