我想在编译时根据派生类型为类生成一个哈希。今天我产生它想:编译时的C++类型ID
template<class Type>
class TypeBase
{
public:
static const unsigned s_kID;
};
template<class Type>
const unsigned TypeBase<Type>::s_kID = hash(typeid(Type));
但这种生成(相当不必要的)运行时初始化代码(哈希(..)函数基础上的std :: TYPE_INFO ::名称()一个简单的哈希)
想法?
是否存在散列碰撞的风险,或者这不成问题? –
@Andreas:创建哈希时,我也有一个包含哈希条目的地图。因此我可以检查是否有碰撞。除此之外,班级的数量可能是20人,所以我想我也很安全。 – Robert
难道你不能只是做'id = ++ someGlobalCounter'吗? (我知道这是不是petformance关键,只是好奇) –