嗨,我正在使用 c++ 和 libpcap。当我尝试调用函数“mycallback”时,出现构建错误。 这些是函数:
void Capture::mycallback (unsigned char * useless, const struct pcap_pkthdr *pkthdr, const unsigned char * packet){
[...]
}
以及对函数的调用:
void Capture::capturar(){
[...]
pcap_loop (descr, -1, mycallback, NULL); //entramos en el bucle (infinito)
}
这是错误:
error: argument of type 'void (Capture ::) (unsigned char *, const pcap_pkthdr *, const unsigned char *)' does not match '{aka pcap_handler void (*) (unsigned char *, const pcap_pkthdr *, const unsigned char *)} '
我不明白这些错误,因为声明是相同的,有人可以帮助我吗?
谢谢。
最佳答案
您的回调是一个类成员函数。在大多数平台上,您可以使用静态类成员函数,但理想情况下您应该只使用常规函数。如果需要对该类进行特殊访问,您可以将该函数设为该类的友元
。
错误确实表明了这一点:
... 'void (Capture::) (unsigned char *, const pcap_pkthdr ... 与 '{aka pcap_handler void (*) (unsigned ...
) 不匹配注意 Capture::
出现在“不匹配”的左侧而不是右侧?每当出现这样的错误时,请比较两侧并看看有什么不同。
关于c++ - 使用 libpcap 和 c++ 构建错误 pcap_loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9969280/