【问题标题】:Modify a specific object member of an array of objects through passing通过传递修改对象数组的特定对象成员
【发布时间】:2014-10-11 20:47:04
【问题描述】:

我想修改对象数组的特定对象成员。所以我打算将对象成员传递给一个方法,该方法将遍历数组并修改每个对象的指定成员:

Object *objs[10];
if (condition)
   modify_all(objs, Object.x, set_value);

但我不能像那样传递 Object.x。有没有更好的方法来做到这一点? 我需要这样的东西,因为 modfiy_all 不知道要修改哪个成员。

编辑:我只是想重构数组的重复迭代。

【问题讨论】:

  • 您也许可以使用模板来执行此操作,例如 this question
  • 这听起来有点复杂,但我会试一试。谢谢!
  • 是的,这很复杂,但是您尝试做的事情有点奇怪。根本不使用函数可能更容易,而只是使用 for 循环。如果你使用 c++11,你可以使用带有 lambda 函数的回调作为替代。

标签: c++ arrays struct member


【解决方案1】:

您可以传递 char 或 int 来代替 object 成员,并且该 string 或 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 个对象成员,将它们与整数或字符匹配会让人感到困惑。
  • 您可以使用 ENUM 更好地识别它们而不会混淆
  • 需要提供成员变量和参数值的映射关系。
  • 这正是我想做的。但我找不到他们将任何东西映射到成员变量的任何地方!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 2019-10-06
  • 2019-12-28
  • 2021-11-11
  • 1970-01-01
  • 2021-05-31
相关资源
最近更新 更多