我正在尝试将迭代器中的结构传递给使用“。” - 运算符访问结构的函数。我试图绕过传递值,指针和地址的差异,我只是想不出这个。
以下是编译器和生成错误的代码的错误。
编译错误:
server-iterative.cpp:222:109:错误:初始化无效 从类型的表达式引用类型'const ConnectionData&' “ConnectionData *” server-iterative.cpp:134:13:错误:传递'bool is_invalid_connection(const ConnectionData&)'的参数1
代码:
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;
}
答案 0 :(得分:1)
喜欢这个bool test = is_invalid_connection(*it);
it
是ConnectionData
的迭代器(在向量中),因此*it
是数据本身。