考虑以下使用RTTI启用编译的代码
class Base
{
virtual void f(); //without this, typeid won't show the most derived type
};
class Derived : public Base {};
int _tmain(int argc, _TCHAR* argv[])
{
Base* b = new Derived();
std::cout << typeid(*b).name() << std::endl; //this works but not on the Watch wnd
return 0; //breakpoint here
}
如果我在return
行中断并查看b
变量的“观察”面板,则类型列会显示Base
而不是Derived
。使用AutoExp.dat我可以为特定的基类显示最派生的类型,但我希望能够为所有类型执行此操作。我尝试在Watch和Immediate窗口中使用typeid(b)
无效 - 我得CXX0017: Error: symbol "typeid" not found
。我还尝试在Watch窗口中输入b,t
( Autoexp.dat 语法) - 但后来我得到CXX0026: Error: bad format string