循环遍历多个类

时间:2016-09-07 22:47:03

标签: c++ class loops iterator

在我的代码中有几个类

name

我想问一下是否有办法循环遍历所有这些类,类似这样的

class samples{
some_public_variables
} a, b, c;

提前感谢!

3 个答案:

答案 0 :(得分:0)

您可能需要以下内容:

class samples{
    void foo() const;
};

samples a, b, c;

for (const auto& s : { std::ref(a), std::ref(b), std::ref(c) }) {
    s.foo();
}

答案 1 :(得分:0)

......或同样可怕......

int main()
{
    class samples{
    public:
        samples(int x, int y, int z) : x(x), y(y), z(z) {}
        int x, y , z;
    }
    a { 1, 2, 3 },
    b { 4, 5, 6},
    c { 7, 8, 9 };

    for (auto& s : { &a, &b, &c })
    {
        std::cout << s->x << " " << s->y << " " << s->z << '\n';
    }
}

答案 2 :(得分:0)

如果要迭代执行相同操作的不同类,请使用多态来完成此操作。您可以创建一个抽象类来为其他类创建一个接口,如下所示:

class MyInterface {

    public:
        /* Common method that must be implemented by all children classes */
        virtual void doSomething() = 0;
 };

然后为每个类实现特定方法。

class MyClassA : public MyInterface {

    public:
        void doSomething() { /* Implementation for class A */ }
};

class MyClassB : public MyInteface {

    public:
        void doSomething() { /* Implementation for class B */ }
};

之后,您可以使用公共接口迭代您的类并调用公共方法。像那样:

std::vector<MyInterface> classes;
// Fill your vector with instances of your classes.
for (int i = 0; i < classes.size(); ++i) {
    classes.doSomething();
}

希望能帮到你解决问题。