wxWidgets:运行时类型信息 (RTTI)
wxWidgets:运行时类型信息 (RTTI)
C++ 的一个缺点曾经是没有提供关于类及其在继承层次结构中的位置的运行时信息。
另一个仍然存在的问题是,不能仅通过知道类的名称来创建类的实例,这使得诸如持久存储之类的设施难以实现。
大多数 C++ GUI 框架通过一组宏和函数克服了这些限制,wxWidgets 也不例外。由于它起源于将 RTTI 添加到 C++ 标准之前,并且由于一些(尽管是旧的)编译器仍然缺少对它的支持,wxWidgets(还)不使用它,但提供了自己的基于宏的 RTTI 系统。
将来,将使用标准的 C++ RTTI,并且鼓励您尽可能使用 wxDynamicCast 宏,对于支持它的实现,它被定义为 dynamic_cast 并为所有其他人使用 wxWidgets RTTI。这个宏仅限于 wxWidgets 类,并且只适用于指针(不像真正的 dynamic_cast 也接受引用)。
您希望类型系统知道的每个类都应该在类声明中包含一个宏,例