如果我有:
void print_1();
void print_2();
void print_3();
我有另一个名为valid();
的函数,它返回一个整数
我想宣布一个string = "print_x());"
我希望将x
替换为valid();
例如valid();
返回的值是3
=====> the string will be ("print_3();")
然后我想调用保存在字符串变量中的函数, 我想这样打电话:
print_3();
我该怎么做
答案 0 :(得分:7)
这是“不可能直接”。
但是,您可以这样做:
switch (code) {
case 1: call_1(); break;
case 2: call_2(); break;
}
等...
答案 1 :(得分:2)
C ++对这种编程没有任何支持。
如果你只有三个函数,那么你可以解析字符串并写一个switch语句来调用所需的函数。但是,我怀疑你正在寻找像Perl,Python,Ruby,Lua等脚本语言中的eval()
函数.C ++没有这样的东西。
答案 2 :(得分:0)
正如其他人所指出的那样,C ++没有满足您的确切要求。但您可以将以下代码视为switch
语句的替代。
#include <iostream>
using namespace std;
void print_0()
{
cout << "Print 0\n";
}
void print_1()
{
cout << "Print 1\n";
}
void print_2()
{
cout << "Print 2\n";
}
typedef void(*FunctionPointer)();
FunctionPointer functionPointers[] = {&print_0, &print_1, &print_2};
int main(int argc, char **argv)
{
int return_value = 0;
functionPointers[return_value]();
return_value = 1;
functionPointers[return_value]();
return_value = 2;
functionPointers[return_value]();
return 0;
}
代码使用一组函数指针来调用返回值所预期的特定函数。