次の方法を検討してください
static ComponentType & getTypeFor(const type_info &t){
ComponentType * type = componentTypes[t.hash_code()];
if(type == NULL)
{
type = new ComponentType();
componentTypes[t.hash_code()] = type;
}
return *type;
};
static bitset<BITSIZE> getBit(const type_info &t){
ComponentType & type = getTypeFor(t);
return type.getBit();
}
私はこれを次のように呼びます
ComponentManagerType::getBit(typeid(MyComponentClass));
// Not an instance, passing class name
ComponentManagerTypeが示唆するように、これは、コンポーネントのみを対象としています。現在の問題は、どのタイプも渡すことができるということです。害はありませんが、非コンポーネントオブジェクトのIDとビットセットが作成されます。
Q:基本タイプComponentのオブジェクトのみを受け入れるようにこのメソッドを強制するにはどうすればよいですか?
直接的な方法はないことを私は知っています。しかし、私はこれに頭を悩ませています。
編集:私自身の解決策を追加しました。コーシャかどうかはわかりません。