你如何声明一个const数组的函数指针?

Fac*_*con 13 c++ arrays function-pointers

首先,我有这样的功能.

void func1();
void func2();
void func3();
Run Code Online (Sandbox Code Playgroud)

然后我为数组创建我的typedef:

void (*FP)();
Run Code Online (Sandbox Code Playgroud)

如果我写一个正常的函数指针数组,它应该是这样的:

FP array[3] = {&func1, &func2, &func3};
Run Code Online (Sandbox Code Playgroud)

我想使它成为一个常量数组,在"FP"之前使用const,但我有这个错误消息:

错误:无法将'void(*)()'转换为'void(*const)()'inialization

PD:抱歉我的英语不好.

编辑:

XH

typedef void (*FP)();

class x
{
 private:
  int number;
  void func1();
  void func2();
  void func3();
  static const FP array[3];
}
Run Code Online (Sandbox Code Playgroud)

x.cpp

const FP x::array[3] = {&x::func1, &x::func2, &x::func3};
Run Code Online (Sandbox Code Playgroud)

我的代码更大,更复杂,这是一个总结

Pra*_*rav 8

然后我为数组创建我的typedef: void (*FP)();

typedef以前错过了void吗?

以下是我的编译器.

 void func1(){}
 void func2(){}
 void func3(){}

 typedef void (*FP)();


 int main()
 {
     const FP ar[3]= {&func1, &func2, &func3};
 }
Run Code Online (Sandbox Code Playgroud)

编辑

(看到你的编辑后)

XH

 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];
 };
Run Code Online (Sandbox Code Playgroud)

  • 呃,你的眼睛很好,很棒!鉴于他的错误消息说'void(*)()`,我在想自己的静态成员函数,而不是检查它们是否真的.现在所有的问题是 - 他是否错过了写"静态",或者他是否拼错了typedef或/并且他是否错误地输入了错误信息?的xD (2认同)

vlk*_*vlk 5

没有typedef

void (*const fp[])() = {
    f1,
    f2,
    f3,
};
Run Code Online (Sandbox Code Playgroud)