在我的代码中有几个类
name
我想问一下是否有办法循环遍历所有这些类,类似这样的
class samples{
some_public_variables
} a, b, c;
提前感谢!
答案 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();
}
希望能帮到你解决问题。