새 스레드를 처리해야하는 함수 만들기에 문제가 있습니다. 클래스 외부에서 만들면 모든 것이 올바르게 작동하지만 클래스 내부에서 만들고 싶을 때 호출 방법을 알 수 없습니다.C++에서 클래스 내의 스레드에 대한 함수
내가 가진 함수를 호출 :
pthread_t thread;
pthread_create(&thread, NULL,
sendMessage, (void *) fd);
및 함수 자체는 다음과 같습니다
void * sendMessage(void *threadid) {
string message;
const char * c;
char buffer[200];
int fd = (long) threadid;
while (true) {
cin >> message;
if (message == "exit") {
break;
}
c = message.c_str();
strncpy(buffer, c, sizeof (buffer));
send(fd, buffer, strlen(buffer), 0);
}
}
을하지만 클래스, 예를 들어 내를 선언 할 때 void * Client::sendMessage(void *threadid)
, 내가 얻을 수 있기 때문에 나는 심지어 그것을 만들 수 없다 main.cpp:90:37: error: argument of type ‘void* (Client::)(void*)’ does not match ‘void* (*)(void*)’
아무도 어떤 생각을 가지고 있습니까, 어떻게 그것을 고칠 수 있습니다?
인가? 왜 처음에 수업에 넣었습니까? 필요한 경우 정적으로 만듭니다. – chris
std :: thread를 사용하지 않는 특별한 이유가 있습니까? – sehe
함수를 정적으로 만들거나 C++ 0X 스레딩 기능 – hetepeperfan