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 に答える