当你想在你的代码中找到一个错误时,这很难;当你认为你的代码是不会有错误时,这就更难了。

C++-获取变量函数中传递参数的类型

admin 149℃
有没有什么技巧可以在不将字符串中的类型显式声明为参数之一的情况下获取传入参数的类型?

加上刚才的帖子,基本上我想做的是

如果是A型

呼叫功能

否则,如果是B类

呼叫功能B。

可变模板可以解决这个问题吗?

谢谢。

不,如果它们的类型可能不同,则需要传递某种指定这些类型的结构。

还要注意,只允许某些类型,最好将其限制为指针。

变量模板解决了这个问题。不过,您需要一个更新的编译器,模板需要放在头文件中。为每个唯一的参数类型序列生成一个单独的函数。

变量模板肯定能解决这个问题:

#include <cstdio>

void function_a(int a) { printf("int %d\n", a); }
void function_b(double b) { printf("double %f\n", b); }

void select(int n) { function_a(n); }
void select(double d) { function_b(d); }

template <class T>
void variadic(T a)
{
    select(a);
}

template <class T, class ...Args>
void variadic(T a, Args... args)
{
    select(a);
    variadic(args...);
}

int main()
{
    variadic(1, 3, 2.1, 5.6, 0);
}
但这只能在C++ 0x.

中使用。

如果你指的是变量函数 var_args ,则这些参数不携带任何类型信息。

转载请注明:我的代码 » C++-获取变量函数中传递参数的类型