请教,如何取得类里面成员函数的名称?

wai98 2011-10-26 08:42:52
MFC很不熟,请教!

如何在一个MFC类里的一个方法里面取得本Class的所有成员函数的名称?
...全文
145 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wai98 2011-10-27
  • 打赏
  • 举报
回复
ding
VC天下 2011-10-27
  • 打赏
  • 举报
回复
得自己写了吧,写些宏定义上。或者把函数名当成字符串存起来。好像没有现成的方法直接获得
「已注销」 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hztj2005 的回复:]

如果Class代码是你自己写,自己应该知道。
如果是他人写,本身就要隐藏,达到安全保密的目的。
C++语言不可能提供这么个功能。

当然每个Class,编译之后有一个地址,指向成员函数表,

但如何在代码中去枚举成员函数,还真不知道。
[/Quote]
有几个错误:
1)在C++中,编译后的Class的每次引用并不会有一个地址(但愿没理解错),更没有一个函数表;C++的函数被编译后只有唯一的一个地址,每次引用(实例化)是根据不同的this指针(如VC中及是ECX指针,GCC及是函数的第一个入参),函数地址是唯一的,无论实例化多少次;只有虚函数才存在一个vtable表(同样,针对VC和GCC,这个vtable的地址不一定)
2)在函数被编译后,从汇编代码层(或可执行的机器代码层)是无法区分C或C++的,尤其是static的类成员函数;因此,即使借助IDAPro这样的反向工具,基本上从可执行代码层获得Class内的成员函数基本不可行,特别是成员变量更是不可行(如果不小心发布成Debug版本,成员函数会在IDAPro中被暴露出来,但成员变量不行)
like_chc 2011-10-26
  • 打赏
  • 举报
回复
人工写出来吧。。自己写的class,自己知道直接写,别人写的class,建立个对象然后看看有哪些函数,
再写出来。
可以把这些函数定义成宏,然后以后增加了函数名,就加一个宏。
问题就解决了。类里函数名也不会有太多!
用户 昵称 2011-10-26
  • 打赏
  • 举报
回复
做ide啊,查找(, (前面一般是函数名。
wai98 2011-10-26
  • 打赏
  • 举报
回复
类似Java中的invoke。
可以灵活地根据方法名称,动态调用。
wai98 2011-10-26
  • 打赏
  • 举报
回复
其实我就是需要在代码中枚举成员函数!
用户 昵称 2011-10-26
  • 打赏
  • 举报
回复
编译后的代码不做处理的话好像不能保留名称。
oyljerry 2011-10-26
  • 打赏
  • 举报
回复
有对象,就可以访问它的成员函数。没有这种特殊需求
lgstudyvc 2011-10-26
  • 打赏
  • 举报
回复
这个功能是干什么用的?啥需求?
hztj2005 2011-10-26
  • 打赏
  • 举报
回复
如果Class代码是你自己写,自己应该知道。
如果是他人写,本身就要隐藏,达到安全保密的目的。
C++语言不可能提供这么个功能。

当然每个Class,编译之后有一个地址,指向成员函数表,

但如何在代码中去枚举成员函数,还真不知道。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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