1
StackOverflow。私の最初の投稿はこちら。
私は私が私の仕事で使っていた、C++とMFCからDに来ている - GUIのものだけでなく、しかし(などDECLARE_DYNCREATE
、)多くのMFCのマクロとCObject
クラス。
私はどのようにDを見たのstd.Object
クラスfactory
メソッドを持っています。MFCのCRuntimeClassの置換D
だから、正しく、 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'を決定する方法は?例えば、 'DoSmth(A a)'のような関数のようなものです。 'typeof'は型に関するコンパイル時の情報を使うので、常に' A'を表示します。そして答えに感謝します。 – Raxillan
1)はい2)[typeid](http://dlang.org/expression.html#TypeidExpression) –
Aha。だから、あなたのDプロジェクトにもう一度感謝します。そして最後の質問:Dはすでにコンパイル時の反映を持っています。しかし、Qt QMetaObjectのようなランタイム1はどうですか? – Raxillan