如何存储TypeInfo

jac*_*kie 6 c++

  class A {}
  A a;
  type_info info = typeid (a); // error type_info is private
Run Code Online (Sandbox Code Playgroud)

我想要一个列表list<type_info>来存储类的类型.有解决方案吗?

AnT*_*AnT 8

您无法创建'type_info'对象的副本.但是,如果'typeid'是Lvalue,并且相应的'type_info'对象一旦获得,它将继续存在直到程序结束.出于这些原因,您可以安全地存储指向列表中"type_info"对象的指针.


Căt*_*tiș 5

您无法直接实例化type_info类的对象,因为该类只有一个私有的复制构造函数.由于列表需要复制构造函数...

如果确实需要它,请使用std :: list <type_info*>.

我不知道为什么你需要这个列表,但如果可能的话,我会想到另一种设计,不涉及RTTI.

  • 然后你应该真正使用像你自己创建的类ID. (2认同)
  • 如果你知道你在编译时处理PageA,你应该在PageA中放入一个typedef.示例:class PageA {public:typedef StyleA style_t; // ....}; 然后,当您想要实例化相应的Style时,您只需:"PageA :: style_t mystyleinstance;". (2认同)