64,654
社区成员
发帖
与我相关
我的任务
分享
switch(TYPE)
{
case TYPE1:
emit signalTypeOne(TYPE);
break;
case TYPE2:
emit signalTypeTwo(TYPE);
break;
...
default:
break;
}
typedef void (*fun_t)(int32 type);
typedef struct
{
int type;
fun_t fun;
}list_t;
放到了头文件,类定义的外面。
把const static list_t lists[];
放到了私有变量,并在cpp文件中声明。
但是编译器报错
错误:argument of type 'void (OperatingArea::)(int)' does not match 'void (*)(int)';求解答
[quote=引用 2 楼 turingo 的回复:]
用函数指针列表试试:
typedef void (*fun_t)(int type);
typedef struct
{
int type;
fun_t fun;
}list_t;
static const list_t lists[] =
{
{TYPE1, signalTypeOne},
{TYPE2, signalTypeTow},
...
};
...
typedef void (*fun_t)(int type);
typedef struct
{
int type;
fun_t fun;
}list_t;
static const list_t lists[] =
{
{TYPE1, signalTypeOne},
{TYPE2, signalTypeTow},
...
};
...
typedef void (*fun_t)(int type);
typedef struct
{
int type;
fun_t fun;
}list_t;
static const list_t lists[] =
{
{TYPE1, signalTypeOne},
{TYPE2, signalTypeTow},
...
};
...