Я работал над способом получения уникального идентификатора для некоторых из моих классов, поэтому сейчас я работаю над следующим подходом:
//id_object.h
class DR_UTIL_EXPORT IDBase
{
public:
static UInt32
getNextID();
};
template<class T>
class IDClass
{
public:
static const UInt32 ID;
};
template<class T>
const UInt32 IDClass<T>::ID = IDBase::getNextID();
//id_object.cpp
UInt32
IDBase::getNextID() {
static UInt32 nextID = 0;
return nextID++;
}
но проблема в том, что это не работает должным образом, по некоторым причинам есть классы, которые создаются дважды. Эти функции используются в 2 разных проектах (один - dll, а другой - exe).
Например на Core.dll
IDClass<A>::ID == 0
но включен Application.exe
IDClass<A>::ID == 8
A - это класс, определенный в Core.dll