【发布时间】:2012-04-05 21:18:17
【问题描述】:
我有一个 RTSG::XML3D::OpenGLMeshMA 类的对象。当在其方法 RTSG::XML3D::OpenGLMeshMA::onXflowStateChanged 的断点处停止时,我将以下表达式添加到 Watch 窗口中:
如何将对象的原始地址转换为相同的指针类型,因为这会导致不同的对象(object 和 uniqieId 成员在第一行和第二行中具有不同的值)?
系统信息:VS 2008 3.5 SP1,Win 7 64 位。
【问题讨论】:
-
我猜,虽然我找不到它的文档,但 this 是对该对象的内部引用。而您的第一个是对它的外部引用。这就解释了为什么你只能在一个实例中使用 this,它没有外部引用。
-
@JoshuaDrake 什么是内部参考,它与外部参考有何不同?这些是指针,不是引用,不是吗?
-
指针是一般意义上的引用。有关 C# 版本,请参阅 this (C#)。
-
我现在明白你的意思了。我很困惑,因为 C++ 也有引用(Foo&)。我想知道为什么一个对象在外部和内部会有不同的指针?
vtable可以在这里关联吗?另请注意,外部指针指的是未初始化的堆内存模式 (0xCDCDCDCD)。也许这暗示了一些事情。 -
我想知道为什么这个问题谈到 .NET 版本和 64 位,而我们同时关注 C++ 和 32 位指针。
标签: visual-studio-2008 casting watch