請看看下面的代碼線程功能是給類型轉換錯誤
Server.h
#pragma once
class Server
{
public:
Server(void);
~Server(void);
DWORD WINAPI serverThread(LPVOID param);
private:
SOCKADDR_STORAGE from;
int retval, fromlen, socket_type;
char servstr[NI_MAXSERV],hoststr[NI_MAXHOST];
SOCKET serverSocket, acceptSocket;
};
Server.cpp
小部分顯示在這裏。
Server:Server()
{
//Code
//Passing data to thread
DWORD threadId;
HANDLE hdl;
hdl = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE) serverThread,(LPVOID)acceptSocket,0,&threadId);
//Code
}
DWORD WINAPI Server::serverThread(LPVOID param)
{
//code
}
此代碼生成錯誤
error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'LPTHREAD_START_ROUTINE'
即從線
hdl = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE) serverThread,(LPVOID)acceptSocket,0,&threadId);
這是爲什麼?請幫忙!
「DWORD(WINAPI Server :: *)(LPVOID)」不是「DWORD(WINAPI *)(LPVOID)」。 – chris 2013-03-21 20:24:12
@chris:好的,你的意思是它不能被帶入頭文件? – 2013-03-21 20:33:52
@JesseGood:不,它不是。沒有被接受的答案。沒有頭文件。 – 2013-03-21 20:37:07