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

问题描述 投票:0回答:4

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

void foo(type){
    cout << sizeof(type);
}
c++ variables types
4个回答
62
投票

您不能传递这样的类型,因为类型不是对象。它们在运行时不存在。相反,您需要一个模板,它允许您在编译时实例化不同类型的函数:

template <typename T>
void foo() {
  cout << sizeof(T);
}

您可以使用例如

foo<int>()
来调用此函数。它将实例化该函数的一个版本,并将
T
替换为
int
。查找功能模板


23
投票

正如约瑟夫·曼斯菲尔德(Joseph Mansfield)指出的那样,函数模板可以满足您的需求。在某些情况下,向函数添加参数可能是有意义的,这样您就不必显式指定模板参数:

template <typename T>
void foo(T) {
  cout << sizeof(T);
}

这允许您将函数调用为

foo(x)
,其中
x
是 T 类型的变量。无参数版本必须调用为
foo<T>()


2
投票

有点晚了 - 但可以使用宏来实现 - 像这样:

#define foo(T) std::cout << sizeof(T)
...
foo(MyType);

1
投票

你可以这样做:

#include <typeinfo>

template<class input>
void GetType(input inp){
    auto argumentType = typeid(inp).name();
}

看起来这并不完全是您正在寻找的,但它可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.