C ++模板类实例化两次

时间:2018-06-29 05:38:14

标签: c++ dll

我一直在努力获取某些班级的唯一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上定义的类

0 个答案:

没有答案