我有一些文本test.g,其内容:
a=fun_1(12, "hello")
该本文其实是想调用C++函数,获得返回值。比如上述,fun_1,其实是个C++函数:
string fun_1(int a, string b)
如果,fun_1(12, "hello")的结果是“This is from cpp fun”,那么,我程序读取文本文件,分析后应该得到a="This is from cpp fun",也就是为变量a赋值。
假如,我们已经分析好了,str1 = "fun_1", int a=12, str2="hello",我们可以使用str1,a,str2这三个变量,那么,我们怎么用这三个变量进行函数调用:fun_1(12, "hello")呢?
注意,用户可以自已自行决定这个函数名,也就说,无论什么函数名,C++程序中都要提供一个同名的C++函数供使用。
另外,用户可能有很多这样的函数,比如从fun_1到fun_100。
一种方法是:用一个map<string, void *> ,key存字符串“fun_1”, value存函数指针;为每一个可能被调用的C++函数添加一项到这个map里去。然后实际调用时,检查,如果检测到函数名在该map的key中,则调用相应的value。
有更好的办法?
你真想知道,有什么用,看一下这篇:https://segmentfault.com/a/11...
你就知道有什么用了。