字符串映射到函数名.

tree2000 2006-09-18 04:17:45
以前在CSDN上看了一篇文章说,可以将字符串MAP成函数名,然后已知字符串,调用到对应的函数.
不知道哪位还记得.
或者有更好的方法.
...全文
422 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2006-09-19
  • 打赏
  • 举报
回复
谢谢老妖夸奖!
ccrun.com 2006-09-19
  • 打赏
  • 举报
回复
keiy最近很努力啊。
dronly 2006-09-19
  • 打赏
  • 举报
回复
学习了~~~
柯本 2006-09-18
  • 打赏
  • 举报
回复
呵呵,比老妖晚了一步
柯本 2006-09-18
  • 打赏
  • 举报
回复
另外,如果是继承TObject类中的 __published函数,可用MethodAddress得到它的地址,然后调用
如:
lass A:public TObject
{
__published:
void test() {ShowMessage("ok");}
};

void __fastcall TForm1::Button1Click(TObject *Sender)
{
A *p=new A;
void ( *x)(); //定义函数指针
A::test; //必须,否则,BCB不会将函加入程序.此行不会产生任何代码,只是告诉link,程序要用A::test函数
x=(void ( *)()) p->MethodAddress("test"); //找到test函数地址,相当于java的反射
if (x!=NULL)
x(); //调用p->test();
}
ccrun.com 2006-09-18
  • 打赏
  • 举报
回复
TObject有个MethodAddress的方法,结合TMethod类就可以实现了。
Google搜索MethodAddress和TMethod
wzd268 2006-09-18
  • 打赏
  • 举报
回复
java里面是有的
C++不了解
jiangshx 2006-09-18
  • 打赏
  • 举报
回复
顶!
板凳,听课!
LuoGD 2006-09-18
  • 打赏
  • 举报
回复
一个变通的方法,用String 与函数指针一一对应起来:
typedef map<AnsiString, FuncPtr*> FuncMap;

FuncMap funcs;

funcs["function1"] = function1;
funcs["function2"] = function2;

AnsiString funcName = "function1";

funcs[funcName](param1,param2);

netliuming 2006-09-18
  • 打赏
  • 举报
回复
c++可以吗?倒很想知道
铖邑 2006-09-18
  • 打赏
  • 举报
回复
LoadLibrary
GetProcAddress
juqiang 2006-09-18
  • 打赏
  • 举报
回复
loadlirbrary不可以吗?然后用函数指针来调用
lurel 2006-09-18
  • 打赏
  • 举报
回复
应该可以吧,但涉及到地址问题,是不是有些麻烦呢?
Maconel 2006-09-18
  • 打赏
  • 举报
回复
java,c#之类的还可能,
c++里,只能自己维护一个对应表了。

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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