考虑以下方法
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 和 bitset。
问:如何强制此方法只接受基类型 Component 的对象?
我知道没有直接的方法。但我对此非常摸不着头脑。
编辑:添加了我自己的解决方案。不确定它是否是犹太洁食。