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

v8wbuo2f  于 2023-10-20  发布在  其他
关注(0)|答案(4)|浏览(99)

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

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

1aaf6o9v1#

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

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

你可以用foo<int>()来调用这个函数。它将示例化一个版本的函数,其中T替换为int。查看function templates

qltillow

qltillow2#

正如Joseph曼斯菲尔德指出的那样,函数模板将做你想做的事情。在某些情况下,向函数添加一个参数可能是有意义的,这样你就不必显式指定模板参数:

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

这允许您将函数调用为foo(x),其中x是T类型的变量。无参数版本必须称为foo<T>()

hfyxw5xn

hfyxw5xn3#

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

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

yc0p9oo04#

你可以这样做:

#include <typeinfo>

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

这似乎不是你想要的,但它可能会有所帮助。

相关问题