如何将变量类型传递给函数?像这样:
void foo(type){
cout << sizeof(type);
}
答案 0 :(得分:34)
您不能传递类似的类型,因为类型不是对象。它们在运行时不存在。相反,您需要一个模板,它允许您在编译时实例化具有不同类型的函数:
template <typename T>
void foo() {
cout << sizeof(T);
}
您可以使用例如foo<int>()
来调用此函数。它将实例化函数的一个版本,T
替换为int
。查看function templates。
答案 1 :(得分:13)
正如约瑟夫曼斯菲尔德指出的那样,功能模板可以满足您的需求。在某些情况下,向函数添加参数可能是有意义的,因此您不必显式指定模板参数:
template <typename T>
void foo(T) {
cout << sizeof(T)
}
这允许您将函数称为foo(x)
,其中x
是T类型的变量。无参数版本必须被称为foo<T>()
。
答案 2 :(得分:0)
您可以这样做:
#include <typeinfo>
template<class input>
void GetType(input inp){
auto argumentType = typeid(inp).name();
}
似乎并不是您要找的东西,但这可能会有所帮助。