2012-03-21 12 views
6

RTSG :: XML3D :: OpenGLMeshMA sınıfının bir nesnesine sahibim. onun yönteminde kesme noktasında durdu zaman RTSG :: XML3D :: OpenGLMeshMA :: onXflowStateChanged ben İzle penceresine aşağıdaki ifadeleri ekleyin:Neden döküm nesnesinin adresi, başka bir nesne değeriyle sonuçlanacak şekilde bu noktaya aynı sınıftır?

enter image description here

Nasıl nesnenin ham adres içine dökülmüştür o olabilir Bu aynı işaretçi türü farklı bir nesneye neden olur (nesne ve uniqieId üyeleri birinci ve ikinci satırlarda farklı değerlere sahiptir)?

Sistem bilgisi: VS 2008 3.5 SP1, Win 7 64 bit.

+0

Bunun için bir belge bulamadığım halde, bu _this_ nesnenin dahili referansıdır. Birincisi buna dış referanstır. Bir örnekte neden sadece _this_ kullanabileceğinizi açıklar, harici referansı yoktur. –

+0

@JoshuaDrake _internal reference_ nedir ve _external reference_'dan farkı nedir? Bunlar işaretçiler, referanslar değil, değil mi? –

+0

Bir işaretçi genel anlamda bir referanstır. C# sürümü için bkz. [This (C#)] (http://msdn.microsoft.com/en-us/library/dk1507sz%28v=vs.71%29.aspx). –

cevap

0

Tek mantıklı açıklama (hata ayıklayıcı bir hatadan başka), birden çok devralma kullanmanızdır. Nesnenin başlangıcı 0x0a72d4e4 değil, başka bir yerde (muhtemelen daha yüksek veya daha düşük bir işaretçi). Oyuncunun bulunduğu satır, bu adresi nesnenin başlangıcı olarak ele almak için hata ayıklayıcısını zorlamakta ve buna göre kötü değerler okumaktadır. çoklu kalıtım ile

, değeri 'bu' nesnesinin başlangıç ​​adresi farklı olabilir, ve derleyici gerekli ayarlamaları ekler. Örn. here, here.

+0

-1: Gösterilen her iki ifade de aynı türde. Çoklu kalıtım bunu açıklayamaz. Herhangi bir nesne türetilmiş bir nesnenin (miras terimleriyle) bir alt nesnesi olabileceği için, "nesnenin başlangıcı" türünden bağımsız olarak hiçbir şey yoktur. –

+0

Elbette, üstteki nesne ikinci satırdaki nesne ile aynı tür gösterir. C stili döküm oldu. – DrPizza

+0

Elbette öyle. Ve birden fazla kalıtım sadece * tip * farklı olduğunda aynı işaretçinin farklı bir yorumunu açıklayabilir. "Bu" ifadesinin aslında, gerçekte birden fazla OpenGLMeshMA'nın göründüğü kadar saçma saptadığı türetilmiş bir nesnenin OpenGLMeshMA alt nesnesinin bir işaretçisi olduğunu varsayalım. O zaman bile, iki (aynı) işaretçinin, nesne içindeki OpenGLMeshMA'nın farklı örneklerine nasıl işaret edeceği hiç bir şekilde yoktur. Bu IDE'ye başka bir şey olmalı. –