Добрый день. Возникла задача, которую не знаю как решить.
Есть ряд объектов (b,c), у которых есть переменные (x,y,...).
Нужно, например, напечатать все переменные этих объектов.
Чтобы сократить код пытаюсь все обернуть в одну процедуру print.
Но есть проблема: нужно передать какой параметр печатать, а цикл по самим объектам содержится с подпрограмме.
Можно ли как-нибудь извернуться и это сделать? Может вы уже с таким сталкивались?
Ниже представлен код:
#include <iostream>
#include <vector>
using namespace std;
class A {
public:
double x, y;
virtual void print(double a) = 0;
virtual ~A() {}
};
class B: public A {
public:
void print(double a) {
std::cout << a << std::endl;
}
};
class C: public A {
public:
void print(double a) {
std::cout << a << std::endl;
}
};
void print(vector<A*> v,double a)
{
A *e;
for(vector<A*>::iterator it=v.begin(); it!=v.end(); ++it) {
e = *it;
// другие вычисления
e->print(a);
}
}
int main() {
vector<A*> v;
A *e;
B b;
C c;
b.x=1;
b.y=2;
c.x=3;
c.y=4;
v.push_back(&b);
v.push_back(&c);
print(v,x); // здесь ошибка
print(v,y); // здесь ошибка
return 0;
}