C++ 如何获取函数的指针

鯎鯎 2010-09-11 11:31:57
我想定义如下结构体
typedef struct func
{
String name;
void (*func)();
}mapping_func;

想通过void (*func)()把函数的指针存放在这里,但是我写了如下:
mapping_func mapping[10];
void SubmitInfo()
{
...
}
mapping[0]={"abc",SubmitInfo};
但编译时会出错,是我写错了,还是C++里面不是这样处理的?如果不是这样写应该如果写?因为我是参考C语言的,希望各位大大帮我解决一下问题。
...全文
314 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
mapping[0].func = SubmitInfo;
这样应该可以吧。。
Rex237 2010-09-11
  • 打赏
  • 举报
回复
typedef struct _mapping_func
{
string name;
void (*func)();
void init(string n, void (*f)())
{
name = n;
func = f;
}
}mapping_func;



mapping_func mapping[10];
mapping[0].init("abc",SubmitInfo);
qqq2542210 2010-09-11
  • 打赏
  • 举报
回复
再次补充,你用大括号不是用在初始化的时候,如果把初始化和赋值连起来,相信可以
justkk 2010-09-11
  • 打赏
  • 举报
回复
都指定参数试试
typedef struct func
{
String name;
void (*func)(void);
}
void SubmitInfo(void)
qqq2542210 2010-09-11
  • 打赏
  • 举报
回复
不好意思看错了,我说错了,是TYPE
qqq2542210 2010-09-11
  • 打赏
  • 举报
回复
你应该用func定义变量把,那个mapping_func已经是变量它不是TYPE阿!
pengzhixi 2010-09-11
  • 打赏
  • 举报
回复
mapping[0].func=&SubmitInfo;
dclchj 2010-09-11
  • 打赏
  • 举报
回复
有几个问题:

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
void SubmitInfo()
{
return;
}
typedef struct func
{
string name;
void (*fun)();//这里指针名改一下,原来的funcVC2010以为是构造函数。
}mapping_func;
int _tmain(int argc, _TCHAR* argv[])
{
mapping_func mapping[10]={"abc",SubmitInfo};
//mapping[0]={"abc",SubmitInfo}; 这是初始化的方式,只能向上面这样使用
}
dingshaofengbinbin 2010-09-11
  • 打赏
  • 举报
回复
这样是可以的:
mapping_func mapping[10]={{"abc",SubmitInfo},{},...};
dingshaofengbinbin 2010-09-11
  • 打赏
  • 举报
回复
初始化列表只能在定义的时候进行,如下:
int a[4]={1,2,3,4};
不能定义了之后,再用初始化列表。。。。。
springSuperboy 2010-09-11
  • 打赏
  • 举报
回复
mapping[0]已经是你结构体数组中的一个具体的元素了,指的是结构体了,{}是对数组赋值的。
mapping[0].name = "abc";
mapping[0].func = SubmitInfo(或者&SubmitInfo);//通过函数名给指针函数赋值

仅供参考,谢谢!

64,691

社区成员

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

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