[英]Is there any realistic use case for passing pointers by constant reference rather than by value?
[英]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);
it
是ConnectionData
的迭代器(在向量中),因此*it
是數據本身。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.