以下C ++代码使用typeid
打印出参数的运行时类:
#include <iostream>
class Foo
{
};
class Bar: public Foo
{
};
template <class O> void printTypeName(O& object)
{
std::cout << typeid(object).name();
}
int main(void)
{
Bar x;
printTypeName(x);
}
由于Foo
不是多态的,因此VS C ++不使用该对象来确定类型信息并引发
C4100警告(“未参考的形式参数”)。
有没有办法摆脱警告,同时保留用简单的方法调用打印出对象类型的可能性?我宁愿不必禁用警告。
答案 0 :(得分:3)
您可以使用
#pragma warning(disable : 4100)
//.. stuff
#pragma warning(default : 4100)
关闭警告,然后在完成后再打开。
答案 1 :(得分:1)
答案 2 :(得分:-1)
这对我没有任何错误:
template <typename T>
void prn(const T&){
std::cout << typeid(T).name() << std::endl;
}