我只知道这样一种,请知道的补充。
还请大牛解释一下为什么要加static
class Test
{
private:
typedef void(*func)(void);
func funcPtr[2];
public:
Test();
~Test();
static void func1(void);
static void func2(void);
};
Test::Test()
{
funcPtr[0] = func1;
funcPtr[1] = func2
}
void Test::func1(void) {}
void Test::func2(void) {}
...
所以这就是为什么stl有std::function。你声明一个
function<void(void)>
来代替函数指针,那么所有你能想得到的函数指针类型都可以放进去。如果是类成员函数,你还要把this指针给bind进去,然后就可以到处使用了。不要用裸的函数指针。C语言的函数指针类型在C++里面只能有两个作用:
调用别的C语言编写的dll,你不得不使用函数指针
用来实现std::function