考慮以下幾點:
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