C ++声明函数指针数组

托莫夫

基本上,我需要实现一个事件处理程序类,但是遇到一个错误,我无法声明一个void数组:

class SomeClass
{
public:
    void registerEventHandler(int event, void (*handler)(std::string));

private:
    // here i get this error: declaration of ‘eventHandlers’ as array of void
    void (*eventHandlers)(std::string)[TOTAL_EVENTS];
}

void SomeClass::registerEventHandler(int event, void (*handler)(std::string))
{
    eventHandlers[event] = handler;
}



void handler1(std::string response)
{
    printf("ON_INIT_EVENT handler\n");
}
void handler2(std::string response)
{
    printf("ON_READY_EVENT handler\n");
}

void main()
{
    someClass.registerEventHandler(ON_INIT_EVENT, handler1);
    someClass.registerEventHandler(ON_READY_EVENT, handler2);
}

您能帮我弄清楚确切的语法吗?谢谢!

斯格雷本金

这不是空洞的数组。它是函数指针的数组。您应该将其定义如下:

void (*eventHandlers[TOTAL_EVENTS])(std::string);

或更佳(C ++ 14):

using event_handler = void(*)(std::string);
event_handler handlers[TOTAL_EVENTS];

或C ++ 03:

typedef void(*event_handler)(std::string);
event_handler handlers[TOTAL_EVENTS];

但我宁愿建议使用vector来做到这一点:

using event_handler = void(*)(std::string);
std::vector<event_handler> handlers;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C中的解码声明(数组和函数指针的组合)

来自分类Dev

C ++指针声明访问指针数组

来自分类Dev

C函数指针数组

来自分类Dev

在目标C中全局声明函数指针

来自分类Dev

声明函数指针C ++ arduino 1.6.11

来自分类Dev

理解 C 中声明的数组的指针算术

来自分类Dev

将数组声明为 C 中的指针

来自分类Dev

C-函数指针数组

来自分类Dev

迭代指向C ++中实例的指针数组的数组所需的声明

来自分类Dev

C函数指针行为,数组/数组指针行为

来自分类Dev

在Python中重现C函数指针数组

来自分类Dev

C语言中的函数指针数组

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

C指向函数动态数组的指针?

来自分类Dev

在C函数中传递指向数组的指针

来自分类Dev

C ++:通过函数传递指针数组的语法

来自分类Dev

C ++将指针数组传递给函数

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

指针数组作为c函数中的参数

来自分类Dev

C指向函数动态数组的指针?

来自分类Dev

指针声明和函数调用中的奇数C语法

来自分类Dev

C函数中的传递和重新声明指针

来自分类Dev

C ++如何声明2D数组的指针

来自分类Dev

在C ++中声明一个指针数组

来自分类Dev

指向C中的前向声明结构数组的指针

来自分类Dev

C ++如何声明2D数组的指针

来自分类Dev

C中的分段错误,同时声明了大指针数组

来自分类Dev

在C ++中声明一个指针数组

来自分类Dev

没有声明的C ++多维数组指针