Я пытаюсь передать мою структуру в итераторе в функцию, которая обращается к структуре с помощью оператора «.». Я пытаюсь склонить голову к различию передачи значений, указателей и адресов, и я просто не могу понять это.Передача значения итератора вместо ссылки на функцию
Ниже приведена ошибка от компилятора и кода, который генерирует ошибку.
Compiler ошибка:
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' таким образом, и это вас не удивляет. –
неправильно интерпретировал ошибку компилятора, которую я получал. Благодарю. –