Cześć,
w dużym uproszczeniu tak mniej więcej wygląda kod, który przedstawia mój problem, pomijam z wiadomych celów wszystkie konstruktory itp:
class B{
int a;
int b;
int d;
public:
int geta(return a;);
int getb(return b;);
int getd(return d;);
}
class A{
int sumOfA;
int sumOfB;
int sumOfD;
std::vector<<B>> Objects;
public:
void sumAll(int uniwersalSum) // przez argument przesylam pole które będzie sumowane
{
for (...){
uniwersalSum += Objects[i].get? ...*** // No i właśnie tutaj jest ten problem
}
}
void CalculateAll()
{
sumAll(sumOfA);
sumAll(sumOfB);
sumAll(sumOfD);
}
No i właśnie chciałbym uniknąć tworzenia 3 metod, które będą sumować wszystkie "a", "b", "d". Chciałbym mieć jedną uniwersalną metodę, która w razie konkretnego wywołania będzie potrafiła wyciągnąć z obiektów klasy B odpowiednie pole, np "int b" i w tym wypadku zsumować. Coś jakby taki szablon. Czy da się to wszystko jakoś sprytnie zaprogramować, czy muszę po prostu skopiować całą metodę ile razy tam chce i w jednej linijce podmienić po prostu z geta na getb/getd?
W moim praktycznym przypadku plik będzie miał po prostu dużo linii kodu. Niby mógłbym, ale chciałbym tego uniknąć.
Z góry dzięki za pomoc