1
StackOverflow。我的第一篇文章。
我從C++和MFC中得到了D,這是我在工作中使用的 - 不僅是GUI的東西,還有許多MFC的宏(DECLARE_DYNCREATE
等)和CObject
類。
我怎麼看,在D我們有std.Object
類與factory
方法。D的MFC的CRuntimeClass替換
那麼,如何正確在D中重寫這個C++代碼?如果可能的話,當然。
class CPerson : public CObject
{
DECLARE_DYNAMIC(CPerson)
// other declarations
};
IMPLEMENT_DYNAMIC(CPerson, CObject)
void DoSmthWithObject(const CObject* pObj)
{
CPerson* pPerson = dynamic_cast<CPerson*>(pObj);
ASSERT_VALID(pPerson);
// Work with out CPerson object.
}
// Somethere in code create our CObject...
CObject* pMyObject = new CPerson;
// .. and do some strange things with it.
DoSmthWithObject(pMyObject);
Offtop:你是ae庫的作者?有趣的項目,我檢查一下它的代碼。關於subj:如何在運行時確定_real_類型的'a'?例如像'void DoSmth(A a)'這樣的函數。 'typeof'使用關於類型的編譯時信息,所以它總是顯示'A'。並感謝您的回答。 – Raxillan 2012-03-09 13:49:07
1)是2)[typeid](http://dlang.org/expression.html#TypeidExpression)。 – 2012-03-09 16:00:23
啊哈。所以,再次感謝你的D項目,祝你好運 - 他們令人印象深刻。最後一個問題:D已經有了編譯時的反思。但是運行時怎麼樣,比如Qt QMetaObject的東西? – Raxillan 2012-03-09 16:27:28