C++ 具有不同参数的函数指针

C++ 具有不同参数的函数指针,c++,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;

我编写了一个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;

是否可以在映射中存储具有不同参数的所有函数?如何解决呢?

对于shell来说,合理的解决方案可能是使用一个字符串向量并返回错误代码的函数。因此,这个单一签名:

int (*func)(std::vector<std::string> const &args)
int(*func)(标准::向量常量和参数)

然后在函数中,您需要解析参数,并且可以调用实际实现(例如,
void func3(char*x,string y);

为什么不使用functor?它们更易于使用,更易于面向对象。

您打算如何调用这些函数?您希望能够检查他们的实际签名并将其与提供的参数匹配吗?可能是因为这无法解决他的问题。如果你想把它存储在一个映射中,即使是函子也需要有一个已定义的签名。但是你可以使用虚拟函子,然后作为单独的结构传递参数。这应该可以解决问题,对吗?或者可能是int(*func)(int argc,char*argv[]);=)@不,绝对不是。那将是非常不安全的。
int (*func)(std::vector<std::string> const &args)