gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:15:21 24 4
gpt4 key购买 nike

这是我的代码:

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

  • 在所有三个上,仍然发生错误
  • 仅在原型(prototype)和声明上,仍然发生错误
  • 仅在原型(prototype)上,错误就神奇地消失了

谁能请教一下这个问题?为什么只在home.h函数原型(prototype)中加入语法static,而在home.cpp函数声明和调用中不加入?

最佳答案

Inside a class definition, the keyword static declares members that are not bound to class instances. Outside a class definition, it has a different meaning: see storage duration.

source

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

关于头文件中的 C++ 静态原型(prototype)声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43121684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com