invalid conversion from `void (**)()' to `int (**)()'

pengjzp619 2004-10-18 03:09:37
void addfuct(char *in);
void reducefuct(char *in);

void (*fuc2[])() =
{
addfuct,
reducefuct,
NULL
};

char *fuc(char *in, int (*headers[])(), char *out);

//
调用时
fuc(in, fuc2, out);
编译时第二个函数说invalid conversion from `void (**)()' to `int (**)()'
那我应该如何进行类型转换呢
...全文
334 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
talkingmute 2004-10-18
  • 打赏
  • 举报
回复
void addfuct(char *in);
void reducefuct(char *in);

void (*fuc2[])() = //第一种改法:这里为:int (*fuc2[])()
{
addfuct,
reducefuct,
NULL
};

char *fuc(char *in, int (*headers[])(), char *out);//第二种改法:这里为:char *fuc(char *in,void (*headers[])(),char *out);
//
调用时
fuc(in, fuc2, out);//第三种改法:这里为:fun(in,(int *)fuc2,out);


pengjzp619 2004-10-18
  • 打赏
  • 举报
回复
大哥
我知道必须匹配
对于上面的例子如何进行修改呢

谢谢
谢谢
whoho 2004-10-18
  • 打赏
  • 举报
回复
这几天类似的问题好几个阿
就是说,类型必须精确匹配,包括参数类型包括返回值类型
pengjzp619 2004-10-18
  • 打赏
  • 举报
回复
那如何进行这种类型转换呢
北极猩猩 2004-10-18
  • 打赏
  • 举报
回复
int (*headers[])()
void (*fuc2[])()

两者的类型不兼容啊,一个是返回值为void一个返回值为int当然不可以了
shadowstar 2004-10-18
  • 打赏
  • 举报
回复
typedef int (*fuc2_int_t[])();

fuc2_int_t fuc2_int = (fuc2_int_t)fuc2;

...

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧