例如,我有一个这样的结构:
struct Test
{
int i;
float f;
char ch[10];
};
我有这个结构的对象,例如:
Test obj;
现在,我想以编程方式获取obj
的字段名称和类型。有可能吗?
这是C ++ BTW。
答案 0 :(得分:9)
答案 1 :(得分:4)
我担心您无法获取字段名称,但您可以使用Boost.Typeof获取obj类型:
#include <boost/typeof/typeof.hpp>
typedef BOOST_TYPEOF(obj) ObjType;
答案 2 :(得分:1)
如果没有编写自己的“struct”系统,那是不可能的。您可以获取成员的sizeof,但您需要知道其名称。据我所知,C ++不允许在编译或运行时枚举给定对象的成员。你可以输入一些功能,如“GetNumMembers()”和“GetMemberSize(index)”等来获取你想要的信息...
答案 3 :(得分:0)
您可能还想在网上搜索“C ++序列化”,尤其是Boost
库。我还会搜索Stack Overflow的“C ++序列化”。
许多C ++新手想要从类名创建对象实例或根据名称填写类字段。这就是序列化或反序列化派上用场的地方。
我需要类和成员名称的经验来自打印调试信息。处理异常时,类和字段名称会很有用,尤其是生成它们。