[英]c++ calling a template functor but not passing an argument
我試圖理解c ++中的兩件事,函子和傳遞引用。 下面是示例代碼庫libtins
可在這里libtins例子 。 snifferloop()
函數采用模板函子doo()
。
函子的聲明為bool doo(PDU &some_pdu)
因此PDU
類型的參數some_pdu
通過引用傳遞給函數。
但是, doo()
稱為sniffer.sniff_loop(doo);
並且似乎沒有參數傳遞給doo()
。
有人可以解釋一下這里發生了什么嗎? 抱歉,如果它是基本的。
bool doo(PDU &some_pdu) {
// Search for it. If there is no IP PDU in the packet,
// the loop goes on
const IP &ip = some_pdu.rfind_pdu<IP>(); // non-const works as well
std::cout << "Destination address: " << ip->dst_addr() << std::endl;
// Just one packet please
return false;
}
void test() {
SnifferConfiguration config;
config.set_promisc_mode(true);
config.set_filter("ip src 192.168.0.100");
Sniffer sniffer("eth0", config);
sniffer.sniff_loop(doo);
}
sniffer.sniff_loop(doo)
不調用doo
。 它調用sniffer.sniff_loop
,將指向doo
的指針作為參數傳遞給sniffer.sniff_loop
。 然后sniffer.sniff_loop
將使用該參數調用doo
,並將該參數傳遞給doo
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.