我想使用 Qt 的反射机制,因为 C++ 缺少这个特性。它似乎工作,但调用所有的宏和辅助函数是非常乏味的。例如,要将枚举注册为适当的元类型,我必须完成以下所有步骤:
- 在包含
Q_GADGET
宏的包装类中声明一个枚举。 Q_ENUM
之后使用宏注册枚举。- 注册包含枚举的类:
Q_DECLARE_METATYPE(MyClass)
- 调用
qRegisterMetaType<..>()
包装类的类型和每个声明的枚举。
现在我知道,如果不需要完整功能的一部分,可以省略一些步骤。但这不是我想要的,我需要在信号中使用枚举,并且我需要能够获取信号的元方法并查询它的参数类型。
但我仍然不禁想到必须有更好/更简单的方法来做到这一点。