Как Вы объявляете массив константы указателей функции?

Во-первых, у меня есть функции как это.

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

Тогда я создаю свое определение типа для массива:

void (*FP)();

Если я пишу нормальный массив указателей функции, это должно быть что-то вроде этого:

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

Я хочу сделать это постоянным массивом, с помощью константы перед "FP", но у меня есть это сообщения об ошибках:

ошибка: не может преобразовать 'пусто (*) ()' для 'освобождения (* константа) ()' 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};

Мой код является более большим и сложным, это - сводка

13
задан Facon 4 February 2010 в 21:23
поделиться

4 ответа

Затем я создаю свой typedef для массива: void (* FP) ();

Вы пропустили typedef перед void ?

Следующие работы над моим компилятором.

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

 typedef void (*FP)();


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

ИЗМЕНИТЬ

(после просмотра ваших правок)

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];
 };
8
ответ дан 1 December 2019 в 23:31
поделиться

Какой компилятор вы используете? Это работает на 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;
}
3
ответ дан 1 December 2019 в 23:31
поделиться
    typedef void (*FPTR)();

FPTR const fa[] = { f1, f2};
// fa[1] = f2;  You get compilation error when uncomment this line.
2
ответ дан 1 December 2019 в 23:31
поделиться

Если вы хотите, чтобы сам массив был константным:

FP const a[] =
    {
        func1,
        func2,
        func3
    };
1
ответ дан 1 December 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: