How do you declare a const array of function pointers?

混江龙づ霸主 提交于 2019-12-01 02:46:00

Then I create my typedef for the array: void (*FP)();

Did you miss typedef before void?

Following works on my compiler.

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

 typedef void (*FP)();


 int main()
 {
     const FP ar[3]= {&func1, &func2, &func3};
 }

EDIT

(after seeing your edits)

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];
 };

without typedef:

void (*const fp[])() = {
    f1,
    f2,
    f3,
};

Which compiler are you using? This works on VS2005.

#include <iostream>

void func1() {std::cout << "func1" << std::endl;}
void func2() {std::cout << "func2" << std::endl;}
void func3() {std::cout << "func3" << std::endl;}

int main()
{
int ret = 0;

typedef void (*FP)();

const FP array[3] = {&func1, &func2, &func3};

return ret;
}
    typedef void (*FPTR)();

FPTR const fa[] = { f1, f2};
// fa[1] = f2;  You get compilation error when uncomment this line.

If you want the array itself to be const:

FP const a[] =
    {
        func1,
        func2,
        func3
    };
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!