我正在尝试将迭代器中的结构传递给使用“。”操作符访问结构的函数。我试图围绕传递值、指针和地址的差异来解决这个问题,但我无法弄清楚这一点。
下面是来自编译器的错误和生成错误的代码。
编译器错误:
server-iterative.cpp:222:109:错误:从“ConnectionData *”类型的表达式中对“const ConnectionData&”类型的引用无效初始化 server-iterative.cpp:134:13:错误:传递“bool is_invalid_connection”的参数 1 (const ConnectionData&)'</p>
代码:
struct ConnectionData
{
EConnState state;
int sock;
size_t bufferOffset, bufferSize;
char buffer[kTransferBufferSize+1];
};
for(std::vector<ConnectionData>::iterator it = connections.begin(); it != connections.end(); ++it){
if(FD_ISSET(it->sock, &rset)){
if(process_client_recv(*it) == false){
close(it->sock);
bool test = is_invalid_connection(&(*it));
}
}
}
static bool is_invalid_connection( const ConnectionData& cd )
{
return cd.sock == -1;
}