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?