use*_*976 33 c++ variables types
如何将变量类型传递给函数?像这样:
void foo(type){
cout << sizeof(type);
}
Run Code Online (Sandbox Code Playgroud)
Jos*_*eld 39
您不能传递类似的类型,因为类型不是对象.它们在运行时不存在.相反,您需要一个模板,它允许您在编译时实例化具有不同类型的函数:
template <typename T>
void foo() {
cout << sizeof(T);
}
Run Code Online (Sandbox Code Playgroud)
例如,您可以使用此函数调用此函数foo<int>().它将实例化一个T替换为的函数版本int.查找功能模板.
mic*_*ion 14
正如约瑟夫曼斯菲尔德指出的那样,功能模板可以满足您的需求.在某些情况下,向函数添加参数可能是有意义的,因此您不必显式指定模板参数:
template <typename T>
void foo(T) {
cout << sizeof(T)
}
Run Code Online (Sandbox Code Playgroud)
这允许你将函数调用为foo(x),其中x是类型T的变量.无参数版本必须被调用为foo<T>().