传递迭代器值而不是引用函数
Posted
技术标签:
【中文标题】传递迭代器值而不是引用函数【英文标题】:Passing iterator value rather than reference to function 【发布时间】: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
,这似乎并不让你感到惊讶。
误解了我得到的编译器错误。谢谢。
【参考方案1】:
点赞bool test = is_invalid_connection(*it);
it
是 ConnectionData
(在向量中)的迭代器,因此 *it
是数据本身。
【讨论】:
以上是关于传递迭代器值而不是引用函数的主要内容,如果未能解决你的问题,请参考以下文章
在 EventHandler 中使用 foreach 迭代器值 [重复]