考虑以下几点:
template <class T>
class myButtoncb {
private:
T *ptr;
void (T::*cback) (void)
}
我的理解是:
void (*cback) (void)
这不过是一个函数指针,它指向返回void且不带参数的函数。
我不明白的是T::
的重要性是什么?宣布 仅仅像void (*cback) (void)
还不够吗?
考虑以下几点:
template <class T>
class myButtoncb {
private:
T *ptr;
void (T::*cback) (void)
}
我的理解是:
void (*cback) (void)
这不过是一个函数指针,它指向返回void且不带参数的函数。
我不明白的是T::
的重要性是什么?宣布 仅仅像void (*cback) (void)
还不够吗?
这就是说,它是一个具有this
指针的成员函数。否则,它将是一个自由函数,不会有任何想法它正在操作什么对象,并且将无法访问任何非静态成员函数或成员变量。
这是一个不错看它的方式。 :)。 – Whoami
对于有用的链接+1! – besworland
@besworland链接并不差,但并不存在真正的信息。另外,直接提供信息可以说[比提供链接更好](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers) 。 – jogojapan
@jogojapan我的答案不仅提供了进一步阅读的链接,而且还给出了精确的答案:“是否仅仅像void(* cback)(void)一样声明?” –
您传递的函数必须在类T中声明 - myButtoncb的模板参数。所以,你可以使用如下的功能:
class A
{
public:
void foo(void);
};
myButton<A> b;
b.cback = &A::foo;
-1张贴愚弄的人(即使这不是愚弄的人,应该是从基本的C很明显++语法这是什么意思。) – 2012-10-11 06:59:28