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;
}
使它成爲'is_invalid_connection(* it);'。你已經用這種方式調用了'process_client_recv',這似乎並不讓你感到驚訝。 –
錯誤地解釋了我收到的編譯器錯誤。謝謝。 –