【发布时间】:2011-01-13 03:01:42
【问题描述】:
首先,我有这样的功能。
void func1();
void func2();
void func3();
然后我为数组创建我的 typedef:
void (*FP)();
如果我写一个普通的函数指针数组,它应该是这样的:
FP array[3] = {&func1, &func2, &func3};
我想使它成为一个常量数组,在“FP”之前使用 const,但我收到了以下错误消息:
错误:无法将 'void ( * )()' 转换为 'void ( * const)()' 初始化
PD:对不起,我的英语不好。
编辑:
x.h
typedef void (*FP)();
class x
{
private:
int number;
void func1();
void func2();
void func3();
static const FP array[3];
}
x.cpp
const FP x::array[3] = {&x::func1, &x::func2, &x::func3};
我的代码比较庞大复杂,这是一个总结
【问题讨论】:
-
编写实际代码总是比说“然后我为数组创建我的 typedef:”或“在“FP”之前使用 const”更好。
-
@Facon:你正在使用一个类?你能把整个代码贴在这里吗?
-
是的,没错。顺便说一句,您使用的是哪个编译器?
-
别管我了。正如@Prasoon 所注意到的,代码是错误的。而且报错信息也很奇怪。
标签: c++ arrays function-pointers