我正在处理一个带有.h文件和.cpp文件的项目。我正在编写一个函数,我想利用函数指针数组,其中数组中的每个函数都是根据与枚举相关的条件调用的。我已经在我的.h文件中声明了5个函数和数组本身。我应该在哪个文件中将数组的每个值设置为相应的函数(.h或.cpp)?
答案 0 :(得分:1)
如果数组定义本身位于.h文件中,我预测你会遇到问题。
你应该在.c文件中定义数组(以及值的设置)。
在.h文件声明数组作为extern,如下所示:
extern func_pointer_t array[];
但是一般来说全局变量是一个坏主意,你应该考虑提供一个API来从数组中获取函数指针。
func_pointer_t get(unsigned int i);
答案 1 :(得分:1)
通常,变量赋值发生在“.cpp”文件中。如果你需要它全局,你会把东西放在.h文件中。
另外,请注意,数组中只能存在一个函数指针类型。换句话说,所有函数必须具有相同的签名。
如果更改数组以保存函数对象或指向函数对象的指针,则可以有多种函数对象派生自基函数对象。
另请参阅std::vector
和std::map
。