0

我正在尝试将迭代器中的结构传递给使用“。”操作符访问结构的函数。我试图围绕传递值、指针和地址的差异来解决这个问题,但我无法弄清楚这一点。

下面是来自编译器的错误和生成错误的代码。

编译器错误:

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

1 回答 1

1

像这样bool test = is_invalid_connection(*it);

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

于 2013-09-25T13:04:24.490 回答