C ++将变量类型传递给函数

时间:2014-03-02 11:36:36

标签: c++ variables types

如何将变量类型传递给函数?像这样:

void foo(type){
    cout << sizeof(type);
}

3 个答案:

答案 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();
}

似乎并不是您要找的东西,但这可能会有所帮助。