于2011年12月21日 11:22:15,曹朋写到: > 首先在这里谢谢各位的热情帮助。 > 可能我的问题还有描述清除。 > 但是,从一些朋友的回答当中,已经学到了很多东西。 > 现在的问题: > > 嗅探器(抓取数据包)是由libpcap库来实现的,而这个libpcap库是由C实现的。 > 使用C在控制台下完全可以获取一些网络数据包,并分析之。 > 但是,我得需要一个图形界面,故使用了QT来作图形界面。 > 问题,就是出现在了C(也就是libpcap)和QT混合起来; > 由于在处理网络数据包的时候,使用到了回调函数(已经在上篇邮件当中说明); > 怎样将这种策略转化为QT当中可使用的方法。 > > > 在 2011年12月21日 上午10:49,Leo Ding <leo.din...@gmail.com>写道: > >> QT 的信号槽使用也很方便,QWidget编程还是挺简单的,如果用QGraphicsWidget写程序的话那一个郁闷啊,不过动画效果能做的很好 >> ~~~~ >> >> 在 2011年12月20日 下午8:53,曹朋 <a382...@gmail.com>写道: >> >>> 问题描述: >>> 笔者近日,在做网络嗅探器,其中用到一函数,pcap_loop(pcap_t *,int,pcap_hander callback,u_char >> *); >>> callback参数如下:(u_char *,const pcap_pkthdr *,const u_char *);其作用是,来一个数据 >>> 包,调用一次callback,来一次调用一次。 >>> 但,令笔者困惑的是,这个callback并不能被定义成类的成员,一旦定义成类的成员,编译便会报错 >>> argument of type‘void (classname::)(u_char *,const pcap_pkthdr *,const >>> u_char *) does not match void (*)(u_char *,const pcap_pkthdr *,const >> u_char >>> *)’。 >>> >>> >> 可是,不定义为成员,就访问不了类的成员。故,笔者换做了友元、static,编译,运行等,均不会有问题。可问题是,我想在callback当中使用类的成员。 >>> callback是用来处理网络数据的。也就是说,我想在callback当中处理了数据之后,在赋值给类的某个成员。然后,显示在界面上。 >>> >>> >>> 问题: >>> 如何在callback当中使用类的成员?或者,这个callback应该一何种方式来定义?在或者,如何通过QT的信号与槽机制来实现? >>> 或者,有没有一种方案来解决这个问题? >>> 或者,谁可以提供一个思路? >>> >>> 此为:笔者毕设,”基于Linux的网络嗅探器的设计与实现“ >>> 自己当时的实现方案: >>> 1、使用libpcap首先在consle下实现抓包分析。 >>> 2、学习QT界面。 >>> 3、二者结合。。。就是这二者结合除了大问题了(当时也意识到,会出问题。。。libpcap(也就是C)+QT 混合编程)。 >>> -------------- 下一部分 -------------- >>> 一个HTML附件被移除... >>> URL: < >>> >> https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20111220/24e95459/attachment.html >>>> >>> -- >>> ubuntu-zh mailing list >>> ubuntu-zh@lists.ubuntu.com >>> https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh >>> >> -------------- 下一部分 -------------- >> 一个HTML附件被移除... >> URL: < >> https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20111221/339055ae/attachment.html >>> >> -- >> ubuntu-zh mailing list >> ubuntu-zh@lists.ubuntu.com >> https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh >> > -------------- 下一部分 -------------- > 一个HTML附件被移除... > URL: > <https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20111221/b88ee7f0/attachment.html>
public class A { public static void Funct(int args) { //.....do action } } 然后要调用Funct的话,用A.Funct(1)就可以了…… 实际上c++的话,似乎没有要求那么严格……你应该是可以直接混用c与c++的。 写在类的外面就好了。 -- ubuntu-zh mailing list ubuntu-zh@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh