我有一個類,A
,它需要靜態事件處理程序。我需要靜態事件處理程序,因爲中斷正在調用事件處理程序。帶繼承類的虛指針
class A {
private:
static void (*fn1)();
public:
A();
static void setFn1(void (*function)(void));
static void onEvent();
};
A::A() { }
void A::setFn1(void (*function)(void)) {
fn1 = function;
}
void A::onEvent() {
A::fn1();
}
我想繼承基於應用A
和孩子創建事件 處理程序邏輯,使用fn2
這裏。
class B : public A{
public:
B();
void fn2();
};
B::B() {
A::setFn1(&fn2);
}
void B::fn2() {...}
當我打電話:A::setFn1(&fn2)
我得到以下編譯器錯誤。
#169 argument of type "void (B::)()" is incompatible with parameter of type "void ()()
我的腦子糊塗所有這些空洞的指針,如果我甚至使用了正確的設計了,我不知道。 A
類包含我所有的實用方法。 B
類包含我的應用程序特定功能。
這些不是空指針!它們是指向不帶任何參數但不返回任何內容的函數的指針。 – 2013-04-04 19:07:41