【发布时间】:2019-01-03 13:56:51
【问题描述】:
c++11/arm编译器v6.9/keil5
我有 2 个类 (class1, class2) - 我想将一个函数地址从 class1 发送到类 2,但我不能 - 我必须将我的函数定义为静态的 - 但我不想这样做
// ---------------------------- CLASS1.CPP ----------------------------
void CLASS1::ControlTransfer(uint8_t Physical_EPn, uint8_t bEPStatus) {
// ...
}
void CLASS1::init() {
class2.intHandler(2, ControlTransfer); // error: reference to non-static member function must be called
}
// ---------------------------- CLASS2.H ----------------------------
typedef void (TFnEPIntHandler) (uint8_t Physical_EPn, uint8_t bEPStatus);
// ---------------------------- CLASS2.CPP ----------------------------
TFnEPIntHandler *_apfnEPIntHandlers[16];
void CLASS2::intHandler( uint8_t num, TFnEPIntHandler *pfnHandler ) {
_apfnEPIntHandlers[ num ] = pfnHandler;
}
// _apfnEPIntHandlers used in my interrupt function
【问题讨论】: