以下C++代碼使用typeid
打印出來的運行時類的參數的:在模板方法中使用typeid時,如何擺脫C4100警告?
#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警告(「未引用的形式參數」)。
有沒有什麼辦法擺脫這個警告,同時保留用一個簡單的方法調用打印出對象類型的可能性?我寧願不必禁用警告。
[工程在克細++](http://www.ideone.com/yDKIq)。 – iammilind
我認爲,如果將'typeid'應用於非多態類型,那麼該警告是一種很好且容易獲得診斷的方法。嘗試添加一個虛擬析構函數到'Foo'。 MSVC可能會忽略警告。 –
@Johannes將'typeid'應用於非多態類型時出了什麼問題? –