使用dynamic_cast就必須在編譯器中啓動RTTI,即“運行時期類型識別”。默認情況下編譯器是不啓動RTTI的。凡是程序中用到了RTTI(比如typeid)都要在編譯器中打開RTTI,這樣才能正確編譯。
VC6下啓動RTTI:
Project->settings->c/c++->category->c++ language,將Enable Run-Time Type Infomation(RTTI)選中,或者直接使用/GR編譯選項.
VS.net2003下啓動RTTI:
項目->項目屬性->C/C++->語言,將“啓用運行時類型信息” 選擇爲“是”。
RTTI(運行時類型識別)問題
如:#include<iostream>
using namespace std;
int main()
{
int int_num=1;
double dou_num=1.1;
cout<<int_num<<" is "<<typeid(int_num).name()<<endl;
cout<<dou_num<<" is "<<typeid(dou_num).name()<<endl;
return 0;
}