私は多くのクラスを持って、という名前の同じクラスから派生B1B2 ...。GET int型Idは、クラス名とそのオブジェクトを使用して呼び出さ
私は、クラスごとにユニークなint型を返すと
getId<Bi>() == get_id(new Bi()) .... for every i (1)
getId<Bi>() != getId<Bj>() .... when i!=j (2)
、言い換えれば
get_id(new B1()) , get_id(new B2()) ....
と一致していることなりき
getId<B1>() , getId<B2>() , ...
関数を作成したいですB1 B2は単なる表記法であり、実生活では整数のない長い名前です。両方の機能を実装する方法
?
要件:
1.私はそれらの多くがあるので、すべてのBi.h(B1をB2 ...クラス)を編集する必要はありません。
2.それは面倒であるため、各クラスの割り当て整数を手動で、許可されていません。
3.それは遅いので型IDまたはdynamic_castをは、使用することはできません(私が試してみました。)
4.テンプレートは
5.非決定性okです生成された整数が低い場合(ボーナス)
6. okです値(例:B1 = 1、B2 = 2 ...)は良いでしょう。
結果(整数)は、ハッシュ関数のために使用されます。
私は(2)(1)&検索が、両方を満たす任意の解決策を見つけることがあります。
は例えば、Efficient way to generate id unique to class?は十分に有用ではありません。
http://en.cppreference.com/w/cpp/types/is_sameをお探しですか? –
いいえ、私は、同じ型チェックではなく、ハッシュ関数に整数を使用します。これを指摘するために質問を編集します。 – javaLover
リンクされたソリューションの問題点は何ですか? – user975989