请参阅下面的演示代码:
string foo(double a, double b) {
//...
}
void goo(foo) {
// ... do something base on string/double/double of foo
}
我想在goo
基于foo
的返回/参数类型做一些事情,我该如何使用C ++?
一种可能的方法是在模板类对象中绑定foo
和goo
。
在我的实际案例中,foo
和goo
并非同时确定,这意味着您无法将它们绑定在一起。
答案 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))
{
// ...
}