不同C ++程序中的唯一类型标识符

时间:2011-12-11 11:50:22

标签: c++ template-meta-programming

有没有办法自动(即不是手动)为共享公共源代码的不同程序中的类型分配唯一标识符?我需要一个程序告诉另一个“使用类型X”,另一个程序会知道“X”的意思。当然,他们会(部分地)共享源代码,因为你不能在运行时构造类型,我只想要一种从某种标识符(整数或字符串)到例如构造映射的自动方法。工厂函数返回给定类型的对象。

我选择的一个显而易见的选择是name()std::type_info的结果,但据我所知,甚至不能保证不同类型之间的差异,并使用{{1}的地址实例肯定不会跨程序工作。

我不能使用C ++ 11,但可以使用Boost。

2 个答案:

答案 0 :(得分:0)

  

我只想要一种从某种方式构建地图的自动方式   标识符(整数或字符串)到例如工厂功能返回   给定类型的对象。

不会发生,反正不是在标准C ++中。

答案 1 :(得分:0)

您可以查看boost serialisation。它会自动为多态类生成唯一ID,并允许显式注册非多态类。