최근에 채팅을 빌드하기 위해 boost :: thread (STL- 스레드로 시도 됨)를 사용하기 시작했습니다. 내가 가지고있는 클래스 내 "서버 역"에서 만든C++로 클래스 내에서 스레드를 생성합니다.
-
에서 호출되는 스레드입니다 서버 청취를 시작 +
- 무효 기능을 결합 MAIN.CPP에서 전화를받을
- 무효 기능 함수는 내가 언급하기 전에
코드 : 난 '이'내가 유래에 읽을 수 있기 때문에 그 노를 추가 만들기 스레드 부분에서
this is ServerSocket.cpp file
void ServerSocket::startHosting()
{
Bind();
Listen();
boost::thread clients_listener = boost::thread(&ServerSocket::clientsListener);
}
//This is the thread function
void ServerSocket::clientsListener()
{
..... handling incoming clients sockets , code goes here ....
}
정적 멤버 함수는 클래스를 나타내는 'this'멤버가 있어야합니다.하지만 'this'가 주어지지 않을 때 0 대신에 다른 오류가 있지만 이번에는 1을 더했습니다.
오류 C2064 - 용어 않습니다 1 개의 인수를 취하는 함수로 평가하지 않는다.
누군가이 문제를 해결하는 방법을 알고 나와 대답을 알려주시겠습니까? 나는 정적 기능을 수행 할 수 있지만 내가 해당 기능에 정적 필요한 모든 다른 회원을 만들기 위해 나를 필요로하고 내가 싶어하지 않는 다음 줄에
boost :: thread (boost :: bind (& ServerSocket :: clientsListener, this));'(테스트되지는 않았지만 history가 가르쳐 준 것이 있다면 ...). 객체를 생성 할 때 그 객체로 무엇을 할 것인지를 확신하지 못하면'startHosting()'을 닫을 때 즉시 파괴해야합니다. – WhozCraig
잘 작동하지 않았다 ... – IdoM
당신은 이것을 시도했다 : boost :: thread clients_listener = boost :: thread (& ServerSocket :: clientsListener, this); 오류가 발생 했습니까? – sajas