How do you declare a const array of function pointers?

后端 未结 5 1032
忘了有多久
忘了有多久 2021-01-11 11:34

Firstly, I\'ve got functions like this.

void func1();
void func2();
void func3();

Then I create my typedef for the array:

v         


        
相关标签:
5条回答
  • 2021-01-11 11:49
        typedef void (*FPTR)();
    
    FPTR const fa[] = { f1, f2};
    // fa[1] = f2;  You get compilation error when uncomment this line.
    
    0 讨论(0)
  • 2021-01-11 11:50

    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;
    }
    
    0 讨论(0)
  • 2021-01-11 11:57

    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];
     };
    
    0 讨论(0)
  • 2021-01-11 11:59

    If you want the array itself to be const:

    FP const a[] =
        {
            func1,
            func2,
            func3
        };
    
    0 讨论(0)
  • 2021-01-11 12:08

    without typedef:

    void (*const fp[])() = {
        f1,
        f2,
        f3,
    };
    
    0 讨论(0)
提交回复
热议问题