我有以下标题:
class MyClass {
private:
static void (*OnRequest)();
static void (*OnReceive)(int numBytes);
public:
MyClass();
static void SetOnReceive(void (*function)(int));
static void SetOnRequest(void (*function)(void));
};
void NonClassFunction();
和以下声明:
#include "MyClass.h"
MyClass::MyClass() {
...
}
void MyClass::SetOnReceive(void (*function)(int) ) {
OnReceive = function;
}
void MyClass::SetOnRequest( void (*function)(void) ) {
OnRequest = function;
}
void NonClassFunction() {
MyClass::OnRequest();
}
代码编译良好,但链接时出现以下错误:
未解析符号 MyClass::OnReceive,首先在 ./src/MyClass.obj 中引用
未解析符号 MyClass::OnRequest,首先在 ./src/MyClass.obj 中引用
我需要 OnRequest 和 OnReceive 像通过 NonClassFunction() 的回调一样工作。NonClassFunction 被中断调用,所以这里有一些面向对象的修改。MyClass 旨在被继承。理想情况下,我希望 OnRequest 和 OnReceive 是虚拟的,但您不能将静态方法设为虚拟。