Derleme zamanında türetilmiş türüne göre bir sınıf için bir karma oluşturmak istiyorum. Bugün hoşuna oluşturmak: (oldukça gereksiz yere) çalıştırınDerleme zamanında C++ türü kimliği
template<class Type>
class TypeBase
{
public:
static const unsigned s_kID;
};
template<class Type>
const unsigned TypeBase<Type>::s_kID = hash(typeid(Type));
ama bu üretir zaman başlatma kodu
(hash (..) işlevi std :: Type_info :: adı() dayalı basit karma yapar)Fikirler?
Karmaşık çarpışma riskiniz yok mu, belki de sorun değil? –
@Andreas: Karmaları oluştururken, karma girişleri olan bir haritanım da var. Böylece çarpışma olup olmadığını kontrol edebilirim. Bunun yanı sıra, derslerin sayısı belki 20, bu yüzden ben de onunla güvende olurum. – Robert
Sadece id = ++ someGlobalCounter' gibi bir şey yapamazdınız mı? (Bunun önemli olduğunu biliyorum, sadece kritik değil kritik) –