Unity3dにあるものと同様の「コンポーネントマネージャー」クラスをC++で作成しようとしています。私が欲しいのは、BaseComponentなどのクラスの派生型を保持できるコンテナクラスです。団結して、ジェネリックスを使用してタイプセーフな方法でコンポーネントを要求できます。
タイプがDerivedComponentType&であるmanager.GetComponent()
C++でも同じインターフェースが欲しいのですが。このように、コンポーネントがAddComponent関数を介して追加される限り、プロセス全体が使用法の観点からタイプセーフであることが保証されます。
私はここで、文字列で識別するなどのことを避けるようにしています。すべての派生型に同じ名前の静的メンバー関数を指定し、そのアドレスをクラスインスタンスへのマップインデックスとして使用することでも、これを実行できることに気付きました。コンポーネントマネージャーのユーザーが、独自のコンポーネントを派生させることを選択した場合に、この関数が存在することを確認する必要がないように、これは行いたくありません。
ありがとう。