考虑以下因素:
template <class T>
class myButtoncb {
private:
T *ptr;
void (T::*cback) (void)
}
我的理解是:
void (*cback) (void)
这只是一个返回void的函数的函数指针,并且不带参数。
我不明白的是,T::
的重要性是什么?宣布是不够的
只有void (*cback) (void)
?
答案 0 :(得分:2)
这表示它是一个具有this
指针的成员函数。否则,它将是一个自由函数,不知道它正在操作什么对象,并且将无法访问任何非静态成员函数或成员变量。
答案 1 :(得分:1)
答案 2 :(得分:0)
你传递的函数必须在类T中声明 - myButtoncb的模板参数。所以你可以使用如下函数:
class A
{
public:
void foo(void);
};
myButton<A> b;
b.cback = &A::foo;