Ptherads em c++

1. Ptherads em c++

Hudson Orsine Assumpção
brevleq

(usa Slackware)

Enviado em 20/10/2008 - 16:58h

Estou estudando pthreads, porém não estou conseguindo compilar o meu programa no c++! Vi na internet que eu deveria usar uma função estática ou uma função estilo c, porém nenhuma das duas opções resolveu meu caso!!

Adicionei os fontes abaixo:

main.cpp
========================================================================

#include <stdio.h>
#include <pthread.h>

#include "CommandListener.h"
#include "ScreenPrinter.h"

int main(void){
printf("olá!!");
ScreenPrinter printer;
CommandListener cmdListener;
//while(1){
//}
return(0);
}

========================================================================


CommandListener.h

========================================================================

#ifndef COMMANDLISTENER_H
#define COMMANDLISTENER_H

#include <stdio.h>
#include <pthread.h>

class CommandListener{
public:
static const int NENHUM_PRESSIONADO=0;
static const int A_PRESSIONADO=1;
static const int B_PRESSIONADO=2;
static const int C_PRESSIONADO=3;
CommandListener(void);
int getCommad(void);
void commandWaiter(void);
private:
pthread_t thread;
static void createThread(void *obj);
int pressed;
};

#endif

========================================================================


CommandListener.cpp

========================================================================

#include "CommandListener.h"

CommandListener::CommandListener(void){
printf("CommandListener");
pthread_create(&thread,NULL,&createThread, this);
printf("CommandListener Criado");
}

void createThread(void *obj){
reinterpret_cast<CommandListener *>(obj)->commandWaiter();
}


int CommandListener::getCommad(void){
return(pressed);
}

void CommandListener::commandWaiter(void){
while(1){
char valor;
valor=getchar();
if(valor=='a' || valor=='A')
pressed=A_PRESSIONADO;
if(valor=='b' || valor=='B')
pressed=B_PRESSIONADO;
if(valor=='c' || valor=='C'){
pressed=C_PRESSIONADO;
break;
}
}
}


========================================================================

O erro retornado pelo compilador é esse:


make
g++ -c -pipe -Wall -W -O2 -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT -I/usr/lib/qt/mkspecs/default -I. -I. -I/usr/lib/qt/include -o CommandListener.o CommandListener.cpp
CommandListener.cpp: In constructor 'CommandListener::CommandListener()':
CommandListener.cpp:8: error: invalid conversion from 'void (*)(void*)' to 'void* (*)(void*)'
CommandListener.cpp:8: error: initializing argument 3 of 'int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)'
make: ** [CommandListener.o] Erro 1


Como eu resolvo isso pelo amor de Deus??


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts