【发布时间】:2018-01-16 06:27:55
【问题描述】:
我想用这种方式调用C++函数:
我有一个将字符串与相应的 c++ 函数匹配的数组
int x() {
return 6;
}
int y(int t){
return t;
}
A functions[] = { { "x" , void*&x } , { "y", void*&y}};
A 就是一个简单的结构体。 程序获取一个字符串作为用户的输入。
如果我有一个黑魔法盒函数 Z ,它将一个字符串作为参数,并在数组“functions”中搜索并返回与字符串参数相等的 struct 的第二个元素。
例如Z("x") 返回void*&x ..etc..
如果我不知道函数数组中的所有函数,我该如何调用 Z 的返回函数?
例如我想要这样的东西:
void * g = Z("y"); //returns the y function
g(8);
我不想要特定的演员表或 if/else,因为第一次用户可能会给出“x”,第二次给出“y”,而第二次我不想要 if/其他情况,因为函数的数量可能是无穷大。
【问题讨论】:
-
所有函数的签名是否相同(返回值和输入参数的类型相同)?
-
正如我在示例中提到的 x 和 y 函数具有不同的签名。所以答案是否定的。
-
@LeAdErQ 你问过如何调用函数,但你必须在某处检索参数......就像
8来自哪里?也许您应该扩展您要解决的原始问题? -
好吧,如果你对 Holt 这么说,那么 我 会告诉你,我们真的不欠你一个答案,这取决于 你 i> 清楚地呈现它。没有人会因为帮助粗鲁的人而绊倒自己。
-
您不知道什么可以帮助解决问题。如果你这样做了,你就不会有问题了。