C++ 我可以在另一个使用C+;的函数中获取函数信息(返回/参数类型)吗+;?
请参见下面的演示代码:C++ 我可以在另一个使用C+;的函数中获取函数信息(返回/参数类型)吗+;?,c++,function,c++11,types,C++,Function,C++11,Types,请参见下面的演示代码: string foo(double a, double b) { //... } void goo(foo) { // ... do something base on string/double/double of foo } 我想在 Goo< /Cube中做一些事情,基于 Foo的返回/参数类型,如何用C++ +/P> 一种可能的方法是在模板类对象中绑定foo和goo 在我的实际案例中,foo和goo不是同时确定的,这意味着您不能将它们绑定在一起。假设您通
string foo(double a, double b) {
//...
}
void goo(foo) {
// ... do something base on string/double/double of foo
}
<>我想在<代码> Goo< /Cube中做一些事情,基于<代码> Foo的返回/参数类型,如何用C++ +/P>
一种可能的方法是在模板类对象中绑定foo
和goo
在我的实际案例中,
foo
和goo
不是同时确定的,这意味着您不能将它们绑定在一起。假设您通过指针传递foo
,您可以使用模板:
template<typename R>
void bar(R (*func)(double, double))
{
// Do something with func
// example:
R variable = func(3.14, 42);
std::cout << variable;
}
也可以基于R
进行一些元编程。请注意,您也可以对函数参数使用模板:
template<typename R, typename P1, typename P2>
void bar(R (*func)(P1, P2))
{
// ...
}
模板
空栏(R(*func)(P1、P2))
{
// ...
}
由于typedeffunc
,返回类型必须是string
。我误解了你的问题吗?@JosephMansfield foo可以是任何返回/参数类型,但只有两个输入参数“在我的实际情况中,foo和goo不是同时确定的”,这是否意味着foo
在你遵守goo
后可以更改?存在decltype
,但它要求foo
的定义在遵守goo
时可见。是否希望goo
可以接受任何只接受2个参数的函数指针?
template<typename R, typename P1, typename P2>
void bar(R (*func)(P1, P2))
{
// ...
}