1

可能重复:
void(U::*)(void) 是什么意思?

考虑到以下几点:

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

我的理解是:

void (*cback) (void)

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

我不明白的是,重要的是T::什么?仅声明 like 还不够void (*cback) (void)吗?

4

3 回答 3

2

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

于 2012-10-11T06:58:08.730 回答
1

来自C++ 常见问题

“指向成员函数”的类型与“指向函数”的类型不同吗?

是的。

我提供给你的链接有很多关于这个主题的信息。

于 2012-10-11T07:00:52.410 回答
0

您在此处传递的函数必须在类 T​​ 中声明 - myButtoncb 的模板参数。因此,您可以使用如下函数:

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


myButton<A> b;
b.cback = &A::foo;
于 2012-10-11T07:01:40.203 回答