C++ 跨不同C++;程序

C++ 跨不同C++;程序,c++,template-meta-programming,C++,Template Meta Programming,是否有一种方法可以自动(即不是手动)为共享公共源代码的不同程序中的类型分配唯一标识符?我需要一个程序告诉另一个“使用类型X”,另一个程序就会知道“X”是什么意思。当然,它们将(部分)共享源代码,因为您无法在运行时构造类型,我只希望有一种自动方式来构造从某种标识符(整数或字符串)到返回给定类型对象的工厂函数的映射 我会选择的一个明显的选择是std::type_info中的name(),但据我所知,这甚至不能保证在不同类型之间是不同的,使用std::type_info实例的地址肯定不会在程序之间起作

是否有一种方法可以自动(即不是手动)为共享公共源代码的不同程序中的类型分配唯一标识符?我需要一个程序告诉另一个“使用类型X”,另一个程序就会知道“X”是什么意思。当然,它们将(部分)共享源代码,因为您无法在运行时构造类型,我只希望有一种自动方式来构造从某种标识符(整数或字符串)到返回给定类型对象的工厂函数的映射

我会选择的一个明显的选择是
std::type_info
中的
name()
,但据我所知,这甚至不能保证在不同类型之间是不同的,使用
std::type_info
实例的地址肯定不会在程序之间起作用

我不能使用C++11,但可以使用Boost实现这一点

我只是想要一个自动的方法,从某种类型的 标识符(整数或字符串),例如工厂函数返回 给定类型的对象


<>不发生,无论如何都不在标准C++中。

你可以看一下。它自动为多形类生成唯一的ID,并允许显式注册非多形类

您是在寻找一种跨平台的解决方案,还是可以接受GNU或Windows特有的解决方案?目的是将这些类型的数据从一个程序发送到另一个程序?如果是这样的话,那么你需要考虑整个序列化/反序列化问题。@dasblinkenlight:不,我需要一些跨平台的东西。毕竟,合理的编译器似乎在
std::type_info
中提供了足够好的
name()。如果我找不到更好的解决方案,我会满足的,至少是一个开始。@Oli:我不需要,我用Boost.Interprocess来共享内存中的对象。