在调试器中查看派生类型最多的类型(启用RTTI)

时间:2011-11-29 13:41:21

标签: debugging visual-c++ rtti

考虑以下使用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

0 个答案:

没有答案