我有以下代码:
try
{
HAS::TCPServerSocket servSock(echoServPort); // Socket descriptor for server
std::vector<HAS::TCPSocket*> sockets(MAXCONN);
for (;;)
{
try
{
if (socketCount < MAXCONN)
{
HAS::TCPSocket* sock(servSock.accept());
sockets.push_back(sock);
std::thread handler(handleTCPClient, std::ref(sockets[socketCount++]));
handler.detach();
}
}
catch (...)
{
cerr << "Unable to create thread" << endl;
exit(1);
}
}
}
我想跟踪有限数量的连接(MAXCONN=4)
,并希望使用std::vector
. 不知何故,当我使用上面的代码时,sock
变量被正确设置为当前套接字,被servSock.accept()
. 但是,当我尝试将sock
变量推到 sock 对象上时,std::vector
我松开了 sock 对象。
我觉得这与正确指定复制和/或移动构造函数有关,但我已经定义了两者(并使用断点查看何时调用),但它们似乎根本没有被调用。