我现在要用c++11写一个大项目。
我正在寻找一些好的c++11/c++反射库,我找到了几个不同的库,但它们中的大多数在过去几年里都没有更新过,或者它们的功能非常有限。
你能告诉我有没有很好的c++1/c++的反射类库?(我希望有静态和动态反射,尽可能多地了解有关方法、类等的信息,可以动态添加和访问方法等。)
或者,也许c++11提供了一些额外的功能来帮助更好地设计反射库,我应该自己编写它吗?(不过我还没有找到关于它的信息。)
发布于 2010-11-21 01:20:01
C++确实不是最好的反射语言。C++0x并没有真正改变这一点。使用类型特征可以获得对静态反射的有限支持,甚至可以使用SFINAE静态地确定某个类是否具有特定的成员函数或成员变量。但事实就是这样。
动态反射是非常有限的。您可以在运行时使用<typeinfo>工具获取类的类型,但仅此而已。
至于静态反射,在没有严重妥协的情况下,通用地迭代类并获取每个成员变量/函数的能力是不可能的。Boost.Fusion通过提供允许您将对象绑定到类似元组的容器的宏来实现这一点。实际上,std::tuple或boost::tuple类自然提供了编译时反射-换句话说,您可以在元组上静态迭代并确定每个成员的类型。这为您提供了类似于任意聚合类型上的编译时反射。不幸的是,它并不像对任意类内置的本机反射支持那样方便。
发布于 2010-11-21 00:39:47
似乎有一个库可以满足您的“广泛”需求。看看镜像:Boost.Mirror。请注意,它正式不是boost的一部分。您还可以看看其他库:Reflective Programming。
发布于 2010-11-21 01:25:30
QT有一种原始的反射形式,你可能想试一试它。
https://stackoverflow.com/questions/4233711
复制相似问题