我有以下标题:类和空指针
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
unsso LVED符号MyClass的:: OnRequest,在./src/MyClass.obj
我需要OnRequest和的onReceive第一参考功能类似于通过NonClassFunction回调()。 NonClassFunction被中断调用,所以在这里有一些面向对象的修改。 MyClass被设计为被继承。理想情况下,我希望OnRequest和OnReceive是虚拟的,但不能使静态方法变为虚拟。
从comp.lang.C++ FAQ:http://www.parashift.com/c++- faq/link-errs-static-data-mems.html – jamesdlin 2013-04-04 03:38:13