传递迭代器值而不是函数引用

时间:2013-09-25 13:00:03

标签: c++ iterator

我正在尝试将迭代器中的结构传递给使用“。” - 运算符访问结构的函数。我试图绕过传递值,指针和地址的差异,我只是想不出这个。

以下是编译器和生成错误的代码的错误。

编译错误:

  

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;
}

1 个答案:

答案 0 :(得分:1)

喜欢这个bool test = is_invalid_connection(*it);

itConnectionData的迭代器(在向量中),因此*it是数据本身。