2011-12-11 10 views
1

共通のソースコードを共有する異なるプログラムの型に一意の識別子を自動的に(つまり手ではなく)割り当てる方法はありますか?別の「使用タイプX」を伝えるプログラムが必要で、もう1つはその「X」が意味するものを知るでしょう。もちろん、実行時に型を構築できないので、ソースコードを(部分的に)共有することになります。たとえば、ある種の識別子(整数または文字列)から、指定された型のオブジェクトを返すファクトリ関数。でもタイプ間で異なることが保証されていない、とstd::type_infoインスタンスのアドレスを使用すると、確かに、プログラム全体で仕事に行くされていないこと、私は行くと思い異なるC++プログラム間の一意の型識別子

当然の選択はstd::type_infoname()の結果であるが、私は理解して。

私はC++ 11は使用できませんが、Boostを使用することができます。

+0

プラットフォーム間で動作するソリューションを探しているのですか、あるいはGNUやWindows固有のソリューションが必要なのでしょうか? – dasblinkenlight

+0

これらのタイプのデータをあるプログラムから別のプログラムに送信することは目的ですか?もしそうなら、シリアライゼーション/デシリアライゼーションの問題全体について考える必要があります。 –

+0

@ dasblinkenlight:いいえ、私は何かクロスプラットフォームが必要です。結局のところ、合理的なコンパイラは 'std :: type_info'に十分な' name() 'を提供しているようです。私がより良い解決策を見つけることができない場合は、少なくともそれを解決します。 – doublep

答えて

0

の識別子(整数または文字列)からのマップを自動的に作成するだけで、指定されたタイプのオブジェクトを返すファクトリ関数。

とにかく、標準C++内では起こりません。

0

boost serialisationをご覧ください。これは、ポリモーフィッククラスのためのユニークなIDを自動的に生成し、非ポリモーフィックなものの明示的な登録を可能にします。

関連する問題