在C ++中自动生成函数?

时间:2013-07-19 14:53:32

标签: c++ function

我正在寻找自动生成功能。例如,我可以制作50个名为foo1到foo50的函数而不定义每个函数吗?

我正在使用它作为域特定语言的解释器。现在,我有大约80个函数遵循这个通用公式:

pqlsymbol * u_greedy_consen(vector<pqlsymbol * > arglist) 
{  
    pqlsymbol * result;
    if (arglist.size() == 1 && arglist[0]->is_treeset()){
        result = new pqlsymbol(greedy_consen(arglist[0]->get_treeset(), 100 ) );
    }
    else if (arglist.size() == 2 && arglist[0]->is_treeset() && arglist[1]->is_double()){
      result = new pqlsymbol(greedy_consen(arglist[0]->get_treeset(), (float)(arglist[1]->get_double()) ) );
    }
    else if (arglist.size() == 2 && arglist[0]->is_treeset() && arglist[1]->is_int()){
      result = new pqlsymbol(greedy_consen(arglist[0]->get_treeset(), (float)(arglist[1]->get_int()) ) );
    }
    else {
        //cout << "consensus expects 1 treeset and optinally 1 Int/Double argument. " << "Found " << get_arg_types(arglist) << endl;
        result = new pqlsymbol(ERROR, "Type Error");
    }
    return result;
}    

arglist是在命令行传递的参数列表。它检查arglist的大小,然后检查参数是否是正确的类型,然后调用相应的函数。

所以,我想知道我是否可以将其减少到更一般的功能。我会给它一个预期类型的​​参数的向量,然后是一个指向函数的指针,如果找到这些参数将被调用。

那么,有没有办法像我这样打电话:

add_function(“greedy_consen”,[[treeset],[treeset,int],[treeset,double]],&amp; greedy_consen)

这将创建一个函数u_greedy_consen,它会自动查找任何给定的参数集,并在找到时使用这些参数调用greedy_consen。这可能吗?

由于

0 个答案:

没有答案