C++ 跨不同C++;程序
是否有一种方法可以自动(即不是手动)为共享公共源代码的不同程序中的类型分配唯一标识符?我需要一个程序告诉另一个“使用类型X”,另一个程序就会知道“X”是什么意思。当然,它们将(部分)共享源代码,因为您无法在运行时构造类型,我只希望有一种自动方式来构造从某种标识符(整数或字符串)到返回给定类型对象的工厂函数的映射 我会选择的一个明显的选择是C++ 跨不同C++;程序,c++,template-meta-programming,C++,Template Meta Programming,是否有一种方法可以自动(即不是手动)为共享公共源代码的不同程序中的类型分配唯一标识符?我需要一个程序告诉另一个“使用类型X”,另一个程序就会知道“X”是什么意思。当然,它们将(部分)共享源代码,因为您无法在运行时构造类型,我只希望有一种自动方式来构造从某种标识符(整数或字符串)到返回给定类型对象的工厂函数的映射 我会选择的一个明显的选择是std::type_info中的name(),但据我所知,这甚至不能保证在不同类型之间是不同的,使用std::type_info实例的地址肯定不会在程序之间起作
std::type_info
中的name()
,但据我所知,这甚至不能保证在不同类型之间是不同的,使用std::type_info
实例的地址肯定不会在程序之间起作用
我不能使用C++11,但可以使用Boost实现这一点
我只是想要一个自动的方法,从某种类型的
标识符(整数或字符串),例如工厂函数返回
给定类型的对象
<>不发生,无论如何都不在标准C++中。 你可以看一下。它自动为多形类生成唯一的ID,并允许显式注册非多形类 您是在寻找一种跨平台的解决方案,还是可以接受GNU或Windows特有的解决方案?目的是将这些类型的数据从一个程序发送到另一个程序?如果是这样的话,那么你需要考虑整个序列化/反序列化问题。@dasblinkenlight:不,我需要一些跨平台的东西。毕竟,合理的编译器似乎在
std::type_info
中提供了足够好的name()。如果我找不到更好的解决方案,我会满足的,至少是一个开始。@Oli:我不需要,我用Boost.Interprocess来共享内存中的对象。