2012-10-17 49 views
0

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

+0

只能在H文件中放入cpp文件以外的内容。任何其他实体是否可以访问这些信息?如果是的话,.h如果不是,.cpp。有了这样一个简单的项目,它并不重要。 –

+0

真是一个品味的问题。我会在头文件中初始化数组。 – m0skit0

回答

1

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

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

而在.h文件声明数组作为一个外部的,就像这样:

extern func_pointer_t array[]; 

但全局是一般一个坏主意,你应该考虑得到一个函数指针提供了一个API的阵列。

func_pointer_t get(unsigned int i); 
1

通常,变量赋值发生在“.cpp”文件中。如果你需要全局的话,你可以把一些东西放在一个.h文件中。

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

如果更改数组以保存函数对象或指向函数对象的指针,则可以有许多种基函数对象派生的函数对象。请参阅std::vectorstd::map

+0

+1只是好奇,你能有一个指向函数指针的指针吗?如果是这样你的数组可以存储这些,不是吗? –

+0

@ AK4749:与整数一样,指向整数指针的指针是* same *数据类型的另一个间接指针。每个*函数签名*被视为函数指针的不同类型。所以,指向函数指针的指针不会帮助需要指向* any *函数的人。 –

+0

嗯是有道理的,如果我想过这种方式谢谢! –