visual studio调试器 - 观看指针转换

时间:2014-07-18 11:44:40

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

我有一些丑陋的拉格代码,我试图理解并想要调试。

情况:

class A{
// some members and functions
// but no virtual ones
};

class B:public A
{
// contains virtual methods
}

class C:public B
{}

// now somewhere there is an array of pointers to A;
A* someList[FixSize];

// and another struct contains a pointer to that someList.
struct T{
 A** list;
}t;

someList的数组元素实际上是C类型。由于A不包含任何虚方法,因此调试器仅显示该列表中的A元素,并且不在其树视图中提供子类成员。

list指针投射到C**显然无效,因为C - 对象与其A部分之间存在偏移。

如果将(C*)(t->list[0])设置为监视,则调试器会显示正确的数据。但以这种方式检查50个物体并不是很方便。

有没有人知道一些聪明的方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

(C**)t->list,10正在Visual Studio 2010中进行测试。 根据您的struct T {} t定义,它应为(C**)(t.list),10