c++咋在编译期绑定要访问结构体成员的名字?C语言结构体指针问题
大家好,我现在有①个①字节对齐的pod类型的struct
struct TestStn{nchar array[③②];ninttnum;n};nnstruct TestSt①n{nchartarrary②[①②];ninttnum②;n};n
c++没有反射,我有什么方法可以在不改动结构体或者很小的改动做到在预处理器或者编译期通过字符串的形式(或者其他友好的形式)传入我要访问的成员名呢?最好能不用c++①①以上的新特性
类似下面的实现效果
extern char const array[] = "array②";ntemplate typename TestType, const char *memNamenvoid VisitMember()n{nTestType st;nst.memName = n}nnint main()n{nVisitMemberTestSt, array();n}n谢谢大家:)
#define DECLARE_MEMBER(owner, field_type, field)struct member_##owner##_##field{typedef owner ObjectType;typedef field_type MemberType;MemberType }const MemberType } };#define MEMBER(owner, field) member_##owner##_##field// your own code:struct MyStruct{int intField; int intField②;std::string strField;};DECLARE_MEMBER(MyStruct, int, intField)DECLARE_MEMBER(MyStruct, int, intField②)DECLARE_MEMBER(MyStruct, std::string, strField)template struct Visitor{Visitor(ObjectType std::cout
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
