【问题标题】:C++ How do you call a method for all members of a class? [closed]C++ 如何为类的所有成员调用方法? [关闭]
【发布时间】:2019-01-27 12:50:49
【问题描述】:

我有一个班级会有很多成员,我想 为该类的所有成员调用方法,而不是 只是个人成员

我可以通过链表链接班级的所有成员,但有更好的方法吗?

【问题讨论】:

  • 该方法的功能是什么?
  • 我不太明白你的问题,但链表几乎永远不是答案。
  • 你需要一个数组(或一个向量),而不是一个类。
  • 也许你的成员应该是向量的元素而不是类的成员?

标签: c++ class


【解决方案1】:

做你想做的最好的方法是,如果你的元素(你称之为类memebres)在一个数组中,那么你可以像这样遍历它们 我假设你想要类似的东西

#include <algorithm>
#include<vector>
class A {};

void doSomething(A member) {}
int main() {
    std::vector<A> Amemebers;
    std::for_each(Amemebers.begin(), Amemebers.end(), doSomething);
}

【讨论】:

  • 我认为 OP 意味着一个类方法,就像每个对象单独调用它一样,但这应该也可以。
  • 您的想法非常有用。我一直在海上,因此延误了。对于我的应用程序,类成员数组是答案,因为不需要动态分配成员,但如果成员需要动态分配,则向量将是答案
【解决方案2】:

C++ 天真地不支持反射。这意味着您无法获得类成员的列表。可能有用于此目的的外部库和工具,但您不能在标准 C++ 中这样做。

所以你问的是不可能的。您需要做的是将成员变量存储在某种容器中,例如std::vector

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2016-03-13
    相关资源
    最近更新 更多