c++ - 你如何声明一个 const 函数指针数组?

标签 c++ arrays function-pointers

首先,我有这样的功能。

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/

相关文章:

c++ - 使类不可复制的宏

arrays - 什么是 "value"数组?

c# - C# 中大型 bool 数组的问题

c++ - 在 ARM mbed 中使用回调时 undefined reference

更改指针地址 - 函数

c++ Singleton with map 原因 "violation reading location"

可以存储在 std::map 中然后公开映射的 C++ 模板类型

c++ - C++ 快速编译

c++ - std::vector<std::array<T, N>> 或 std::array<std::vector<T>,N> 类型的数组如何存储在内存中?

C 结构体和函数指针