Hi all,
I'm trying to call a non-static method when SIGALRM is received. Since it's non-static I can't just call the method, I need to qualify it. However then it's not a void* it's a void (class*).
This is my class, the method in question, and the only variable concerned:
Code:
class RemoraServer : public CommonApplication
{
....................
public:
.......................
void CatchAlarm(int signo)
{
if (signo == SIGALRM)
{
timeToSendEmail = TRUE;
} //end if
} //end CatchAlarm(...)
..............
private:
Boolean timeToSendEmail; //should we send our QA email yet?
}; // end class RemoraServer
RemoraServer::RemoraServer()
: CommonApplication("/nerr/remora/.RemoraServer.debug", "SERVER"),
dataListenSocket(-1),
dataServerSocket(-1),
defaultDataPort(11428),
myProtocol("tcp"),
numberOfHosts(0),
repositoryURI("/pages/ProcessRemoteData.php"),
repositoryURL("www.nerrenvirons.org"),
repositoryPort(80),
myConfigFile("/nerr/remora/host.config"),
CDMODataString(""),
CDMOCmdsCollectedSoFar(0),
CDMOMaxCmdsPerDataString(50), //start out small for experimentation
amITheCDMO(FALSE),
CDMOSocket(-1),
numberOfFailedAttempts(0),
numberOfChildren(0),
timeToSendEmail(FALSE)
{
//setup our signal handlers
......................
if (signal(SIGALRM, &RemoraServer::CatchAlarm) == SIG_ERR)
{
//this is us telling ourselves it's time to send an email
;
} //end if ALARM
} //RemoraServer::RemoraServer()
and this is the error I'm getting:
cannot convert 'void (RemoraServer::*)(int) to 'void (*)(int)' for argument '2' to 'void (* signal(int, void (*)(int)))(int)
I don't want to make the method static, because each object can send emails at different times.
Any ideas?