如何调用保存在string中的函数

时间:2013-12-09 19:48:17

标签: c++

如果我有:

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();

我该怎么做

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;
}

代码使用一组函数指针来调用返回值所预期的特定函数。