代码之家  ›  专栏  ›  技术社区  ›  Aamir

从结构字段的对象中获取其名称和类型

  •  1
  • Aamir  · 技术社区  · 14 年前

    例如,我有一个这样的结构:

    struct Test
    {
        int i;
        float f;
        char ch[10];
    };
    

    我有一个这个结构的对象,比如:

    Test obj;
    

    现在,我想以编程方式获取 obj . 有可能吗?

    这是C++ BWT。

    4 回复  |  直到 14 年前
        1
  •  9
  •   Community Egal    7 年前

    你在要求 Reflection in C++ .

        2
  •  4
  •   Sebastian    14 年前

    恐怕你不能得到字段名,但是你可以用 Boost.Typeof :

    #include <boost/typeof/typeof.hpp>
    typedef BOOST_TYPEOF(obj) ObjType;
    
        3
  •  1
  •   Goz    14 年前

    不,不写自己的“结构”系统是不可能的。您可以获取成员的大小,但需要知道其名称。根据我的知识,C++不允许在编译或运行时枚举给定对象的成员。您可以放置一些函数,如“getNumMembers()”和“getMembersize(index)”等,以获取您需要的信息…

        4
  •  0
  •   Thomas Matthews    14 年前

    您还可能希望在Web上搜索“C++序列化”,尤其是 Boost 图书馆。我还将搜索堆栈溢出,用于“C++序列化”。

    许多C++新手希望从类名创建对象实例,或者基于名称填充类字段。这就是序列化或反序列化的用武之地。

    我需要类和成员名的经验来自于打印调试信息。类和字段名在处理异常时非常有用,尤其是在生成异常时。