【发布时间】:2013-09-25 13:00:02
【问题描述】:
我正在尝试将迭代器中的结构传递给使用“.”操作符访问结构的函数。我试图理解传递值、指针和地址的区别,但我无法弄清楚这一点。
下面是编译器的错误和产生错误的代码。
编译器错误:
server-iterative.cpp:222:109:错误:初始化无效 从类型的表达式中引用类型“const ConnectionData&” ‘连接数据*’ server-iterative.cpp:134:13: error: in pass argument 1 of ‘bool is_invalid_connection(const ConnectionData&)’
代码:
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;
}
【问题讨论】:
-
让它
is_invalid_connection(*it);。你已经用这种方式打电话给process_client_recv,这似乎并不让你感到惊讶。 -
误解了我得到的编译器错误。谢谢。