我一直在努力获取某些班级的唯一ID,因此我目前正在研究的方法如下:
//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上定义的类