Re: How to call a function just using a string?
On 2007-12-06 12:44:28 -0500, terminator <farid.mehrabi@gmail.com> said:
On Dec 6, 8:37 am, Kira Yamato <kira...@earthlink.net> wrote:
On 2007-12-04 06:04:46 -0500, terminator <farid.mehr...@gmail.com> said:
On Dec 4, 12:37 pm, dolphin <jdxyw2...@gmail.com> wrote:
Hi All!
I have a question that how to call a function just using a string.
For example
There is a .cpp file named a.cpp.There are some functions::fun1()
fun2() fun3().
I have another fucntion void funcall( char *pch). if I pass a
argument char* p1="fun1" .How do I call the function fun1() using that
string "fun1"that I pass.
#include <map>
#include <string>
typedef std::map<std::string,void(*)(void)> FuncMapTypeBase;
struct FuncMapType :
FuncMapTypeBase
{
FuncMapType(){
(*this)["fun1"]=&fun1;
(*this)["fun2"]=&fun2;
(*this)["fun3"]=&fun3;
}
};
const FuncMapType &funxns(){
static FuncMapType funcs;
Will this be allowed here? FuncMapType has private constructor.
Otherwise, your code is a nice demonstration of how to do object
aggregation and singleton.
return funcs;
};
void funcall(const std::string& str){
(*(funcxns()[str]))();
};
had I used the 'class' keyword you would have been ahead by one
point ,But it is a 'struct'( because I am lazy in typing) and has
default public access.
Ah. Silly me. Very nice collection of tricks you used in such a small
sample code.
--
-kira