Javaでは、 'Class'メソッド 'newInstance'を使用してオブジェクトをインスタンス化できます。私は現在、C++で同様のことを達成しようとしています。sizeof、malloc、およびキャストを使用したC++オブジェクトのインスタンス化
これはどのように達成されるかもしれませんが、いくつかのリフレクションの後ではわかりませんでした(あなたはそれを得るのですか...そうですか?)私は、ClassDescriptionクラスを作成することで可能かもしれないと思います。クラスインスタンスの 'sizeof'属性を保持する属性と、この量のメモリをmallocしてvoid *として返すnewInstanceメソッドです。呼び出し側のコードはこれを適切にキャストする必要があります。
C++言語は、これが有効かどうかを適切に定義していますか?
ところで..私は、バックアップ計画であるクラスのファクトリを持つレジストリを作成できることを認識しています。この質問への回答については、私が議論したことがうまくいくかどうかという特定の質問に重点を置くことが重要です。
よろしく
*追加のコンテキスト*この要件のため 理由は、ライブラリのユーザーは、ライブラリ自体の意識ではなく、あるクラスをインスタンス化する汎用的なライブラリーを可能にすることです。ライブラリは、これを達成するために使用するいくつかのメタデータを持ち、クラスのサイズを伝えることができます。ユーザーの視点からは、メタデータにファクトリオブジェクトを追加する必要がないように、「きれい」です。
あなたのクラスにプライベートコンストラクタを与えて静的メソッドから 'new Class'を呼び出すのはなぜですか? mallocは使用しないでください。クラスコンストラクタはあなたのために呼び出されません。 – Benj
C++でオブジェクトインスタンスを割り当てるために 'malloc'が使われないのはなぜですか? –
このルートを下りたい場合は、[placement new](http://stackoverflow.com/questions/222557/cs-placement-new)をご覧ください。 – tinman