我可以使用C ++在另一个函数中获取函数信息(返回/参数类型)吗?

时间:2014-01-21 15:06:11

标签: c++ function c++11 types

请参阅下面的演示代码:

string foo(double a, double b) {
  //...
}

void goo(foo) {
  // ... do something base on string/double/double of foo
}

我想在goo基于foo的返回/参数类型做一些事情,我该如何使用C ++?

一种可能的方法是在模板类对象中绑定foogoo

在我的实际案例中,foogoo并非同时确定,这意味着您无法将它们绑定在一起。

1 个答案:

答案 0 :(得分:2)

假设您通过指针传递foo,则可以使用模板:

template<typename R>
void bar(R (*func)(double, double))
{
    // Do something with func
    // example:
    R variable = func(3.14, 42);
    std::cout << variable;
}

使用:

bar(foo);
// or
bar(&foo);

也可以基于R进行一些元编程。请注意,您还可以使用模板作为函数参数:

template<typename R, typename P1, typename P2>
void bar(R (*func)(P1, P2))
{
    // ...
}