Witam,
Mam banalny problem, z którym się męczę od paru godzin. Oczywiście wiem jak obejść ten sposób, ale koniecznie chcę się dowiedzieć jak używać for_each do różnych celów. Otóż mam mam kontener vector obiektów klasy "Student", w której występuje metoda:
void show(){
cout << "Imie i nazwisko: " << get_name() << endl;
cout << "Nr albumu: " << get_index() << endl;
}
Następnie chcę zastosować funkcję nam dostępną for_each:
void showStudents(vector <Student> s){
for_each(s.begin(),s.end(),show);
}
Problem polega na tym, że wywala błąd. Domyślam się, że powodem jest to, iż ostatnim argumentem funkcji for_each jest wskaźnik na funkcję, a nie metodę klasy. Poradziłem sobie w ten sposób:
void showStud(Student& s){
s.show();
}
void showStudents(vector <Student> s){
for_each(s.begin(),s.end(),showStud);
}
Natomiast wiem, że to bez sensu. Mogę przecież zrobić tak:
void showStudents(vector <Student> s){
unsigned int i;
for(i=0;i<s.size();i++) s[i].show();
}
I załatwione. O jedną funkcję mniej. Lecz bardzo chciałbym użyć funkcji, którą daje nam biblioteka STL.
Z góry dziękuje i pozdrawiam :)