我想修改对象数组的特定对象成员。因此,我打算在对象构件传递给将通过阵列迭代并修改指定的构件为每个对象的方法:通过传递修改对象数组的特定对象成员
Object *objs[10];
if (condition)
modify_all(objs, Object.x, set_value);
但我无法通过Object.x那样。有没有更好的方法来做到这一点? 我需要这样的东西,因为modfiy_all不知道要修改哪个成员。
编辑:我只是想重构数组的重复迭代。
我想修改对象数组的特定对象成员。因此,我打算在对象构件传递给将通过阵列迭代并修改指定的构件为每个对象的方法:通过传递修改对象数组的特定对象成员
Object *objs[10];
if (condition)
modify_all(objs, Object.x, set_value);
但我无法通过Object.x那样。有没有更好的方法来做到这一点? 我需要这样的东西,因为modfiy_all不知道要修改哪个成员。
编辑:我只是想重构数组的重复迭代。
您可以传递char或int而不是对象成员,并且该字符串或int将指定应修改哪个成员。例如:
Object *objs[10];
if (condition)
modify_all(objs, "x", set_value);
或
Object *objs[10];
if (condition)
modify_all(objs, 0, set_value);
里面modify_all您可以使用基于此参数发送switch语句。
是的,我想过这样做。不过,我有大约12个对象成员,并且将它们与整数或字符匹配会让人困惑。 – lamino 2014-10-11 20:57:13
您可以使用ENUM来更好地识别它们,而不会感到困惑 – 2014-10-11 20:58:55
您需要提供成员变量和参数值之间的映射。 – 2014-10-11 21:07:40
您可能可以使用模板来做到这一点,请参阅例如[这个问题](http://stackoverflow.com/q/672843/33499) – wimh 2014-10-11 21:00:32
这听起来有点复杂,但我会给它一试。谢谢! – lamino 2014-10-11 21:10:56
是的,这很复杂,但你想做的事有点奇怪。根本不用一个函数,只需要一个for循环就可以了。如果你使用C++ 11,你可以使用带lambda函数的回调来替代。 – wimh 2014-10-11 21:21:59