Ho dato un'occhiata alla documentazione e dire che fa schifo è un complimento.
Comunque non sei obbligato a rendere tutto static, dovrebbe bastare un puntatore.
codice:
class fingerprint {
static fingerprint* pointer;
fingerprint::fingerprint();
fingerprint::~fingerprint();
static void CALLBACK StatusEventHandler(char* idSensor, GRCAP_STATUS_EVENTS event);
void WriteEvent(char* idSensor, int eventCode);
};
static fingerprint* pointer(0);
Ovviamente Il puntatore dovrà essere valido prima di poterlo usare.
codice:
void CALLBACK fingerprint::StatusEventHandler(char* idSensor, GRCAP_STATUS_EVENTS event) {
if (!fingerprint::pointer) throw catastrophic_failure;
fingerprint::pointer->WriteEvent(idSensor, evento_ricevuto);
}
fingerprint::pointer = new fingerprint;
GrCapInitialize(&fingerprint::StatusEventHandler);
delete fingerprint::pointer;