1

私はしばらくの間開発してきました。そして、これらの獣は MFC の wxWidgets コードにときどき現れますが、それらが正確に何をするかについての情報は見つかりません。

私が理解しているように、それらは dynamic_cast がコア C++ に統合される前に登場しました。その目的は、その場でオブジェクトを作成し、実行時に動的にキャストできるようにすることです。

しかし、これが私が見つけたすべての情報が終わるところです。

DLL 内で DECLARE_DYNAMIC_CLASS と IMPLEMENT_DYNAMIC_CLASS を使用し、エクスポートされたクラスに使用されるサンプル コードに出くわしました。そして、この構造は私を混乱させます。

なぜこのように行われるのですか?それは、LoadLibrary を呼び出してから CreateDynamicClass を呼び出して、必要な型にキャストできるポインターを取得するプラグイン ベースのアプローチですか?

DECLARE/IMPLEMENT_DYNAMIC は DLL の境界を越えて機能しますか? クラスでさえ DLLEXPORT に対してそれほど安全ではないため、既存の問題に加えてカスタム RTTI テーブルがあります。

私のクラスを別の DLL の DYNAMIC_CLASS から派生させることは可能ですか? どのように機能しますか?

これらが何のためにあるのか、またはトピックについて2つ以上の文がどこにあるのか、誰か説明してもらえますか?

4

2 に答える 2

1

このようなものは、追加の型情報をクラスに追加します。これにより、ランタイムに依存しない方法で RTTI が可能になり、クラスを作成するためのファクトリを持つ可能性や、他の多くのことが可能になります。COM、QMetaObjectなどで同様のアプローチを見つけることができます

于 2013-03-04T08:28:54.823 に答える
0

DECLARE/IMPLEMENT_DYNAMIC の定義を見たことがありますか?

MS の世界では、すべての大文字は通常マクロを表すため、定義を調べて、そこから何をしているのかを調べてみることができます。Visual Studio を使用している場合は、定義にジャンプするために押すことができるキーがあります。その内容を確認し、それを調べて、そこから作業を試みてください。

于 2013-03-04T02:33:07.067 に答える