對不起,可能的重複,但我不明白我找到了例子和代碼片斷。通行證類函數到另一個類的功能
我有一個名爲「EncoderWrapper」,其中包括一些功能類。其中一個函數稱爲「onAfterTouch」,並在「EncoderWrapper.h」文件中聲明。
void onAfterTouch(byte channel, byte pressure);
的功能將成爲圖書館的其他類功能的回調我用
inline void setHandleAfterTouch(void (*fptr)(uint8_t channel, uint8_t pressure)) {
usb_midi_handleAfterTouch = fptr;
};
注:我完全新的C++,所以我想說對不起,如果我做一些「no-gos」或混合了一些術語。
的問題是:如何通過我的類函數(成員函數?)到庫說,「setHandleAfterTouch」功能?
這是行不通的:
void EncoderWrapper::attachMIDIEvents()
{
usbMIDI.setHandleAfterTouch(&EncoderWrapper::onAfterTouch);
}
...我的IDE說
呼叫usb_midi_class沒有匹配功能:setHandleAfterTouch(無效(EncoderWrapper :: *)(字節,字節) )
我也試過
usbMIDI.setHandleAfterTouch((&this->onAfterTouch));
但是這不會工作...我沒有得到有關的做法。
每個幫助都非常感謝;-)
嗨Guillaume, 謝謝你的回覆。我想我明白了,但我不能修改setHandleAfterTouch函數,因爲它包含在庫中... 目前聽起來像我不能在我的類中使用該庫? https://www.pjrc.com/teensy/td_midi.html –
或者我應該爲usbMIDI實例添加一個getter,併爲每個回調添加一個getter。而且,在我實例化封裝類之後,我應該在該實例上使用getter並設置回調函數? –
@ pixel-shock看看我的編輯 –