在C ++中声明一个函数指针数组

时间:2012-10-17 22:58:56

标签: c++ arrays function pointers header-files

我正在处理一个带有.h文件和.cpp文件的项目。我正在编写一个函数,我想利用函数指针数组,其中数组中的每个函数都是根据与枚举相关的条件调用的。我已经在我的.h文件中声明了5个函数和数组本身。我应该在哪个文件中将数组的每个值设置为相应的函数(.h或.cpp)?

2 个答案:

答案 0 :(得分:1)

如果数组定义本身位于.h文件中,我预测你会遇到问题。

你应该在.c文件中定义数组(以及值的设置)。

在.h文件声明数组作为extern,如下所示:

extern func_pointer_t array[];

但是一般来说全局变量是一个坏主意,你应该考虑提供一个API来从数组中获取函数指针。

func_pointer_t get(unsigned int i);

答案 1 :(得分:1)

通常,变量赋值发生在“.cpp”文件中。如果你需要它全局,你会把东西放在.h文件中。

另外,请注意,数组中只能存在一个函数指针类型。换句话说,所有函数必须具有相同的签名。

如果更改数组以保存函数对象或指向函数对象的指针,则可以有多种函数对象派生自基函数对象。

另请参阅std::vectorstd::map