【发布时间】:2017-05-14 20:08:45
【问题描述】:
在这个函数中我看到了这个错误 错误 C2678:二进制“==”:未找到采用“std::_Binder”类型的左侧操作数的运算符(或没有可接受的转换)
void WComm::startServer(int port)
{
// Connect to a server.
con.sin_family = AF_INET;
con.sin_addr.s_addr = inet_addr("0.0.0.0");
con.sin_port = htons(port);
if (bind(m_socket, (SOCKADDR*)&con, sizeof(con)) == SOCKET_ERROR)
{
printf("Failed to connect.\n");
WSACleanup();
return;
}
// Listen on the socket.
if (listen(m_socket, 1) == SOCKET_ERROR)
printf("Error listening on socket.\n");
}
有人帮我吗? 谢谢。
【问题讨论】:
-
尝试用
::bind代替普通的bind。并改掉using namespace std;的习惯。编译器认为您是从标准库调用std::bind,而不是从 Winsock API 调用bind(由于后者在最后一个参数中的有符号/无符号不匹配,前者在重载决议中更匹配)。 -
@IgorTandetnik 应该作为答案发布。
标签: sockets visual-c++ operators