我目前正在尝试设计一个属性系统,将几个类的成员变量绑定到一个序列化器,我想为每个绑定编写尽可能少的代码,但又要灵活。
我认为getter / setter在大多数情况下并不是必需的,所以它们只会在实际触发某些东西时使用。这些类将提供变量名称列表,以及指向变量的指针,指向getter / setter的指针。
我的问题是:
答案 0 :(得分:1)
您应该考虑使用boost :: property_map
http://www.boost.org/doc/libs/1_49_0/libs/property_map/doc/property_map.html
答案 1 :(得分:0)
危险是,不道德的没有。你可以让这些类成为序列化器的朋友,并为凡人隐藏绑定东西以提高安全性,然后你有一套相关的类,在道德上允许他们了解彼此的内部结构。
该类绝对可以返回绑定信息,例如字节偏移量。如果该类拥有该类的“原型”对象(即其自身类型的静态成员),则可能是最简单的。然后将原型字段的地址作为const char *
并从原型的地址中减去const char *
,得到字段的字节偏移量。
当然,您需要确保知道该字段的类型,因此您可以在给定字节偏移量的情况下正确操作数据(例如,返回到正确的指针类型)。
然而,实现类似的东西有许多问题,主要是围绕确保序列化时具有正确的指针类型,而不是指向对象中某个子对象的指针。