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