C ++中std :: type_info :: name()的持久替代?

时间:2018-06-10 05:20:12

标签: c++

我有一个库,它将C ++对象的状态保存到磁盘。由于对象是由最终用户定义的,因此我使用std::type_info::name()将对象名称作为文件名的一部分,以将持久化数据链接到相应的对象。但是,根据C++ reference

  

const char * name()const;

     

返回一个实现定义的以null结尾的字符串,其中包含该类型的名称。不给予任何保证;特别是,返回的字符串对于多种类型可以是相同的,并且在相同程序的调用之间进行更改。

如果重新启动应用程序,

std::type_info::name()不保证相同类型的值相同。更糟糕的是,它甚至无法保证不同类型的不同名称。 std::type_info::hash_code()类似。

那么,如何获得应用程序重启后幸存的C ++对象的不同名称/ id ,至少在同一操作系统和架构上?

0 个答案:

没有答案