我有以下標題:類和空指針
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