具有不同参数的函数指针

时间:2012-03-01 08:23:37

标签: c++

我编写了一个Shell。

我有不同的功能和不同的参数。

void func1(void);
void func2(char * x,);
void func3(char * x, string y);

目前使用地图存储字符串和指针。

typedef map<string,void (*)()> t_list;
map<string,void(*)()>::iterator it;
t_list list;

list["argument1"]=&func1;

找到并启动我使用的功能:

it=list.find("argument");
if(it != list.end())
{
if->second();
}

是否可以在地图中存储具有不同参数的所有功能?怎么样?

2 个答案:

答案 0 :(得分:1)

shell的合理解决方案可以是一个函数,它接受一个字符串向量并返回错误代码。所以这个单一的签名:

int (*func)(std::vector<std::string> const &args)

然后在函数中你需要解析参数,你可以调用真正的实现(例如void func3(char * x, string y);

答案 1 :(得分:0)

为什么不使用仿函数?它们更易于使用,而且更多是OOP link