头文件中的C ++静态原型声明

时间:2017-03-30 15:07:09

标签: c++ header pcap

这是我的代码:

void got_Packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet);
//in home.h

void got_Packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet){

}
//in home.cpp

pcap_loop(handle, -1, got_Packet, NULL);
//in home.cpp

这是我得到的错误。

error: invalid use of non-static member function
pcap_loop(handle, -1, got_Packet, NULL);
                                      ^"

我添加了语法static

  • 对所有这三个人来说,错误仍然存​​在
  • 仅针对原型和声明,仍然出现错误
  • 仅在原型上,错误消失了,MAGICALLY

有谁可以在这个问题上赐教我?为什么我只能在home.h函数原型中添加语法static,而不是在home.cpp函数声明和调用中添加?

1 个答案:

答案 0 :(得分:1)

  

在类定义中,关键字static声明未绑定到类实例的成员。   在类定义之外,它具有不同的含义:请参阅存储持续时间。

source

如果您打算将该方法设为静态,那么正确的方法是在类定义中以这种方式声明它。静态方法无法访问特定于类实例的数据。