回调函数语法

时间:2012-10-11 06:55:25

标签: c++

  

可能重复:
  What does void(U::*)(void) mean?

考虑以下因素:

template <class T>
class myButtoncb  {
   private:
      T *ptr;
      void (T::*cback) (void)
}

我的理解是:

void (*cback) (void)

这只是一个返回void的函数的函数指针,并且不带参数。

我不明白的是,T::的重要性是什么?宣布是不够的 只有void (*cback) (void)

3 个答案:

答案 0 :(得分:2)

这表示它是一个具有this指针的成员函数。否则,它将是一个自由函数,不知道它正在操作什么对象,并且将无法访问任何非静态成员函数或成员变量。

答案 1 :(得分:1)

来自C++ FAQ

  

“指向成员函数的指针”的类型是否与“指向函数的指针”不同?

     

是的。

我提供给你的

Link有很多关于这个主题的信息。

答案 2 :(得分:0)

你传递的函数必须在类T中声明 - myButtoncb的模板参数。所以你可以使用如下函数:

class A
{
public:
     void foo(void);
};


myButton<A> b;
b.cback = &A::foo;