簡體   English   中英

C ++調用模板函子但不傳遞參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM