I'm trying to reference a function to pthread_create, and i am using the exact same syntax as elsewhere, but it doesn't work. Whats the problem?
Errors:
Here is the code:Code:g++ -pthread -c parser.cpp parser.cpp: In method `void ircParser::init (char *, ircserver, commander)': parser.cpp:34: no matches converting function `runThread' to type `void *(*) (void *)' parser.h:34: candidates are: void *ircParser::runThread (void *) make: *** [parser.o] Error 1
Code:// parser.cpp #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <netdb.h> // #include <regex.h> // Regular Expression (POSIX) Matching #include <fnmatch.h> // Shell-like Regular Expressions #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <iostream> #include <fstream> // For cout redirecting #include <string> #include <fcntl.h> #include <sys/ioctl.h> // ioctl #include <getopt.h> #include "ircserver.h" //#include "sockfunc.h" //#include "ircfunc.h" #include "nemoirc.h" #include "logger.h" #include "parser.h" // Externs extern logger logfile; void ircParser::init(char *iB, ircserver iIS, commander iC) { serv = iIS; buf = iB; cmd = iC; pthread_t p; int data = 123, rc; init(buf, serv, cmd); rc = pthread_create( &p, NULL, run, &data ); if( rc != 0 ) { fprintf( stderr, "pthread_create: %s\n", strerror( rc ) ); } else { logfile << logfile.stamp() << "** ERROR STARTING PARSE **" << logfile.endl; } } void *ircParser::run(void *arg) { rawMsg message; char *type; if (message.msgParser(buf, serv) != 0) return (void *)NULL; if (strcmp("PRIVMSG", message.getCommand()) == 0) logfile << logfile.stamp() << "<" << message.getNick() << "> " << message.getMessage() << logfile.endl; if (strcmp("NOTICE", message.getCommand()) == 0) logfile << logfile.stamp() << "-" << message.getNick() << "- " << message.getMessage() << logfile.endl; cmd.setMessage(message.getSender(), message.getRecipient(), message.getMessage(), message.getCommand(), serv); cmd.parsePrivmsg(); cmd.parseNotice(); cmd.parseSpecial(); return (void *)NULL; }Code:// parser.h #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <netdb.h> // #include <regex.h> // Regular Expression (POSIX) Matching #include <fnmatch.h> // Shell-like Regular Expressions #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <iostream> #include <fstream> // For cout redirecting #include <string> #include <fcntl.h> #include <sys/ioctl.h> // ioctl #include <getopt.h> #include "ircserver.h" //#include "sockfunc.h" //#include "ircfunc.h" #include "nemoirc.h" #include "logger.h" // External declarations //extern logger logfile; //parsedArgs opts; class ircParser { private: //logger logfile; ircserver serv; char *buf; commander cmd; void *run( void *arg ); public: void init(char *, ircserver, commander); };



LinkBack URL
About LinkBacks




CornedBee