我有一个库,它将C ++对象的状态保存到磁盘。由于对象是由最终用户定义的,因此我使用std::type_info::name()
将对象名称作为文件名的一部分,以将持久化数据链接到相应的对象。但是,根据C++ reference:
如果重新启动应用程序,const char * name()const;
返回一个实现定义的以null结尾的字符串,其中包含该类型的名称。不给予任何保证;特别是,返回的字符串对于多种类型可以是相同的,并且在相同程序的调用之间进行更改。
std::type_info::name()
不保证相同类型的值相同。更糟糕的是,它甚至无法保证不同类型的不同名称。 std::type_info::hash_code()
类似。
那么,如何获得应用程序重启后幸存的C ++对象的不同名称/ id ,至少在同一操作系统和架构上?