Ciao a tutti ho un problema,

ho una funzione per registrare un interrupt, con questo prototipo:

codice:
Error_t __DECL ddcSetBCRTEvent(Device_p pCrd, Error_t(*usr_handler)(Device_p pCrd, S16BIT type, S16BIT param));
se la utilizzo in codice c non dà problemi. Io però ho bisogno di includerla in un mio progetto c++ ed ho utilizzato queste classi:

file PInterruptHandler.h

codice:
class PInterruptHandler
{
private:
	PConfigurationCard *configurationCard;
	static PInterruptHandler *objPtr;
public:
	PInterruptHandler(PConfigurationCard* configCard);
	PInterruptHandler(void);
	~PInterruptHandler(void);

	Error_t BcIRQHandler(Device_p _pISRCrd, S16BIT _intrType, S16BIT _param);

	static Error_t CallBackBcIRQHandler (Device_p _pISRCrd, S16BIT _intrType, S16BIT _param)
	{
		return objPtr->BcIRQHandler(_pISRCrd, _intrType, _param);
	}
public:
	
	list<MESSAGE> *messageList;
};
file PInterruptHandler.cpp

codice:
 PInterruptHandler::PInterruptHandler(void)
{
}

PInterruptHandler::~PInterruptHandler(void)
{
	PInterruptHandler::objPtr = nullptr;
}

PInterruptHandler::PInterruptHandler(PConfigurationCard *configCard)
{
	this->configurationCard = configCard;
	PInterruptHandler::objPtr = this;
}

Error_t PInterruptHandler::BcIRQHandler(Device_p _pISRCrd, S16BIT _intrType, S16BIT _param)
{
...
}

PInterruptHandler *PInterruptHandler::objPtr = nullptr;
ho utilizzato un'altra classe, chiamata PBusController, per registrare il metodo statico in questo modo:

PBusController.h

codice:
PBusController::PBusController(PConfigurationCard* configCard)
{
	...
	this->interruptHandler = new PInterruptHandler(this->configurationCard);
	...
}
 
S32BIT PBusController::SetInterrupt(S16BIT mask)
{
	S32BIT Err;
	if(Err = ddcSetBCRTEvent(this->configurationCard->device, &(PInterruptHandler::CallBackBcIRQHandler)))
	{
		return Err;
	}
	...
}
La compilazione va a buon fine, ma quando viene generato l'interrupt il programma va in crash.

Non so più cosa fare, qualcuno ha qualche idea???

Grazie!!!!!