クラスワールドはアクターを生成するように設計されています。
アクターは異なるタイプにすることができます:それは猫でも、犬でも、ツリーでも、すべてでも、唯一の類似のものは、すべて俳優から派生したものです。
またコマンドラインもあり、次のものを書いたところでWorldに文字列を与えます:
what_to_do string_leftover。 what_to_doが "Spawn"と等しい場合、string_leftoverの最初の単語はタイプ名、2番目のアクター名でなければなりません。
問題は、Actorsの数が不定になる可能性があることです。実際のカウントについてはわかりませんが、私はSpawnオーバーロードを手動で記述するのを忘れてしまいます。文字列から特定の型を生成する
非常に単純な場合:
私はコンソールに入力しました: "SelectWorld World1"、 "Spawn PhysicalPendulum OneMorePendulum"。 World1という名前の世界が選択されます(これは完全に動作しています)。名前がOneMorePendulumのPhysicalPendulum型のActorを生成します。
問題:文字列から生成する必要がある型をエレガントに決定できません。
理由:
私が知っているすべての解決策は、アクター派生クラスのヘッダー/オブジェクトファイルにない「文字列型決定子」を作成する必要があります。
私はswitch(pointer-to-functionマップ)を使うことができますが、新しいActor型を作成するたびに、そのSpawn関数に戻り、新しい型をスポーンブルに書き留める必要があります。それを忘れて、デバッグの時間が待っています。
マクロで静的クラスインスタンスを作成できますが、このインスタンスを初期化する前にSpawnerが作成されるという保証はありません。
私はマクロを使ってトリックを考えましたが、特定の定義に "definition_body"があった場合、 "another_definition_body"を追加して "definition_body another_definition_body"を取得できないように、拡張することはできません。
文字列から型をエレガントに生成できますか?
_「スポーン」_を意味しますか?ファクトリーデザインパターンを実際に探していますか? –