[英]How can I get rid of C4100 warning when using typeid in a template method?
以下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警告(“未引用的形式参数”)。
有什么方法可以消除警告,同时保留通过简单方法调用打印出对象类型的可能性? 我希望不必禁用该警告。
您可以使用
#pragma warning(disable : 4100)
//.. stuff
#pragma warning(default : 4100)
关闭警告,然后在完成后再次打开。
这对我有效,没有任何错误:
template <typename T>
void prn(const T&){
std::cout << typeid(T).name() << std::endl;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.