在VS2010监视窗口中显示C ++纯虚拟类仅显示vtable

时间:2013-11-08 21:41:53

标签: c++ visual-studio-2010 debugging interface

在我们的软件中,我们喜欢使用纯虚拟类来实现接口,并且运行良好。调试这些类相当困难的一个小问题是让实现值显示在调试器中。现在我能看到的唯一数据就是接口的vtable。

是否有特定的方法来强制转换,以便我可以看到实现强制转换的值?或任何方式查看值而无需重新编译。

1 个答案:

答案 0 :(得分:3)

Visual Studio 2010将向您显示派生类型作为对象中的第一个条目,名为[type],位于__vfptr字段上方。

如果您没有在调试器中看到派生类型,可能的原因是您的对象已损坏或优化阻止调试器推断对象的实际类型。

在以下image中,b是使用base*初始化的new derived(5)

example

struct base
{
    virtual bool func() = 0;
};

struct derived : public base
{
    derived(int x) { i = x; }
    virtual bool func() { return false; }
    int i;
};