class A {...};
class B : public A {...};
class C : public B {...};
然後我存儲Ç實例爲void *:
C *instance = new C();
void *pC = instance;
它是確定,使這個:
B *pB = reinterpret_cast<B*>(pC);
或者我必須轉換成C * PS:我在我的程序中有更多從B派生出來的類,我不確定是否可以像我在做的那樣投擲(對B *)。
爲什麼無效*:我在box2d引擎中使用物理主體類的void *userdata' field
。我不能有存儲我的課在其他方式
'我不能以其他方式存儲我的課程。「 - 你確定嗎?通常,在C++中,將普通類轉換爲模板允許使用像'T * userData'而不是'void * userData'(其中'T'是實例化模板的類型。 – 2012-01-11 12:23:48
@FrerichRaabe:我是使用將userData存儲爲void *的Box2D Phys引擎。我不認爲這是一個好主意,我自己修改Phys引擎的代碼 – Andrew 2012-01-11 12:31:03