首先,我有这样的功能。
void func1();
void func2();
void func3();
然后我为数组创建我的 typedef:
void (*FP)();
如果我写一个普通的函数指针数组,它应该是这样的:
FP array[3] = {&func1, &func2, &func3};
我想使它成为一个常量数组,在“FP”之前使用 const,但我收到了以下错误消息:
error: cannot convert 'void ( * )()' to 'void ( * const)()' inialization
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};
我的代码比较庞大复杂,这是一个总结
最佳答案
Then I create my typedef for the array:
void (*FP)();
你在void
之前错过了typedef
吗?
以下适用于我的编译器。
void func1(){}
void func2(){}
void func3(){}
typedef void (*FP)();
int main()
{
const FP ar[3]= {&func1, &func2, &func3};
}
编辑
(看到您的编辑后)x.h
class x;
typedef void (x::*FP)(); // you made a mistake here
class x
{
public:
void func1();
void func2();
void func3();
static const FP array[3];
};
关于c++ - 你如何声明一个 const 函数指针数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2200646/