Linuxの動作中のアプリケーションをWindowsに移植しようとしています(windows.h
and POSIXを使用pthread_win32
)
したがって、クライアントのフィールドが定義されています。
struct ClientIdentifier {
pthread_t thread;
int id_client;
...
};
vector<ClientIdentifier> clients;
クライアントのフィールドでこのクライアントのスレッドを見つけようとしています(フィールドのインデックスを返します)
int Server::getClientIndex() {
for (unsigned int i = 0; i < clients.size(); ++i) {
if (pthread_self() == clients.at(i).thread) {
return i;
}
}
return -1;
}
でもこれは:
pthread_self() == clients.at(i).thread
結果:
34 D:\WORKSPACE\C++\DS\gs\server.cpp no match for 'operator==' in 'pthread_self() == (((std::vector<ClientIdentifier, std::allocator<ClientIdentifier> >*)((Server*)this)) + 8u)->std::vector<_Tp, _Alloc>::at [with _Tp = ClientIdentifier, _Alloc = std::allocator<ClientIdentifier>](i)->ClientIdentifier::thread'
note C:\programy\DevCpp\include\objbase.h:80 candidates are: BOOL operator==(const GUID&, const GUID&)
どうすれば解決できますか?