我有一些丑陋的拉格代码,我试图理解并想要调试。
情况:
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个物体并不是很方便。
有没有人知道一些聪明的方法来解决这个问题。
答案 0 :(得分:0)
(C**)t->list,10
正在Visual Studio 2010中进行测试。
根据您的struct T {} t
定义,它应为(C**)(t.list),10