簡體   English   中英

傳遞迭代器值而不是引用函數

[英]Passing iterator value rather than reference to function

我試圖將迭代器中的結構傳遞給使用“。”運算符訪問結構的函數。 我試圖繞過傳遞值,指針和地址的區別,我只是想不通這一點。

以下是來自編譯器的錯誤以及生成該錯誤的代碼。

編譯器錯誤:

server-iterative.cpp:222:109:錯誤:類型'ConnectionData *'的表達式中對類型'const ConnectionData&'的引用的無效初始化server-iterative.cpp:134:13:錯誤:在傳遞'bool is_invalid_connection的參數1 (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;
}

像這樣的bool test = is_invalid_connection(*it);

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM