2013-09-25 49 views
0

我想在迭代器中將我的結構傳遞到使用「。」 - 運算符訪問結構的函數中。我試圖把我的頭圍繞着傳遞值,指針和地址的區別,我只是無法弄清楚這一點。傳遞迭代器值而不是引用功能

以下是編譯器和生成錯誤的代碼的錯誤。

編譯錯誤:

server-iterative.cpp:222:109: error: invalid initialization of reference of type ‘const ConnectionData&’ from expression of type ‘ConnectionData*’ server-iterative.cpp:134:13: error: in passing 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; 
} 
+0

使它成爲'is_invalid_connection(* it);'。你已經用這種方式調用了'process_client_recv',這似乎並不讓你感到驚訝。 –

+0

錯誤地解釋了我收到的編譯器錯誤。謝謝。 –

回答

1

喜歡這張bool test = is_invalid_connection(*it);

it是一個迭代ConnectionData(在載體中),以便*it是數據本身。