将私有方法类成员作为指向函数的指针
passing private method class member as pointer to a function
我在论坛中搜索了一下,我尝试了几种我在这里找到的解决方案,但无效。我的问题是,我需要将班级的私人成员作为指向函数参数的指针,因此我尝试将此方法静态静止,但它不起作用,遵循代码。
。 class monitor {
public:
monitor(device *dev);
...
void exec();
void end();
virtual ~monitor();
private:
static pcap_handler process_packet(u_char *arg, const struct pcap_pkthdr* pkthdr,
const u_char * packet);
static void thread_func(monitor *mon);
device *dev;
};
以及方法的使用方式:
void monitor::exec() {
std::thread t (monitor::thread_func, this);
}
void monitor::thread_func(monitor *mon) {
pcap_loop(mon->dev->get_descr(), -1, monitor::process_packet, reinterpret_cast<u_char*>(mon)); // error in this line
}
pcap_handler monitor::process_packet(u_char *arg, const struct pcap_pkthdr* pkthdr,
const u_char * packet) {
monitor *mon = reinterpret_cast<monitor*>(arg);
...
}
错误是:
error: invalid conversion from ‘void (* (*)(u_char*, const pcap_pkthdr*, const u_char*))(u_char*, const pcap_pkthdr*, const u_char*) {aka void (* (*)(unsigned char*, const pcap_pkthdr*, const unsigned char*))(unsigned char*, const pcap_pkthdr*, const unsigned char*)}’ to ‘pcap_handler {aka void (*)(unsigned char*, const pcap_pkthdr*, const unsigned char*)}’ [-fpermissive]
error: initializing argument 3 of ‘int pcap_loop(pcap_t*, int, pcap_handler, u_char*)’ [-fpermissive]
遵循libpcap函数原型的代码
typedef void (*pcap_handler)(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes);
int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user);
我尝试了其他帖子中解释的几种解决方案,为:
pthread in Class
私人成员功能,将指针指向同一类中的私人成员
c :通过指针调用成员函数
功能指针指向类成员功能问题
但是这些帖子都没有解决我的问题,所以有人提示了吗?
谢谢...
process_packet
是返回 pcap_handler
的函数。它不是pcap_handler
。
使其成为pcap_handler
,将其行更改为:
static void process_packet(u_char *arg, const struct pcap_pkthdr* pkthdr,
const u_char * packet);
相关文章:
- QMetaObject invokeMethod的基于函数指针的语法
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- c++r值引用应用于函数指针
- 模板函数指针和lambda
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 带有类的函数指针
- () 函子后面的括号,而不是函数指针?
- 全局作用域中函数指针的赋值
- 使用"Task"函数指针队列定义作业管理器
- 将成员函数指针作为参数传递给模板方法
- 如何创建对象函数指针C++映射?
- 匹配函数指针作为模板参数?
- 通过函数指针定义类范围之外的方法
- 存储在类中的函数指针
- C++从函数指针数组调用函数
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 整数键映射到头文件中的成员函数指针
- 从类成员函数到类 C 函数指针的转换
- 如何将内联匿名函数分配给C++函数指针
- 将字符缓冲区强制转换为函数指针