如何将变量类型传递给函数?像这样:
void foo(type){
cout << sizeof(type);
}
您不能传递这样的类型,因为类型不是对象。它们在运行时不存在。相反,您需要一个模板,它允许您在编译时实例化不同类型的函数:
template <typename T>
void foo() {
cout << sizeof(T);
}
您可以使用例如
foo<int>()
来调用此函数。它将实例化该函数的一个版本,并将 T
替换为 int
。查找功能模板。
正如约瑟夫·曼斯菲尔德(Joseph Mansfield)指出的那样,函数模板可以满足您的需求。在某些情况下,向函数添加参数可能是有意义的,这样您就不必显式指定模板参数:
template <typename T>
void foo(T) {
cout << sizeof(T);
}
这允许您将函数调用为
foo(x)
,其中 x
是 T 类型的变量。无参数版本必须调用为 foo<T>()
。
有点晚了 - 但可以使用宏来实现 - 像这样:
#define foo(T) std::cout << sizeof(T)
...
foo(MyType);
你可以这样做:
#include <typeinfo>
template<class input>
void GetType(input inp){
auto argumentType = typeid(inp).name();
}
看起来这并不完全是您正在寻找的,但它可能会有所帮助。