Вызов функции произв.класса внутри STL-алгоритма
От: Anfi  
Дата: 11.03.05 10:15
Оценка:
Помогите новичку в STL.
Начитавшись корифеев STL, понял, что надо писать алгоритмы вместо циклов.
Как, не используя циклы, можно вызвать функцию член производного класса
для каждого элемента вектора указателей на базовый класс.

Иными словами, вызвать внутри STL-алгоритма функцию-член от производного класса
т.е. призвести приведение типа ЭЛЕМЕНТА контейнера перед вызовом функции-члена?

#include <vector>
#include <algorithm>
#include <functional>

class A
{ public: int Foo(){return 0;}; };
class B : public A
{ public: int Boo(){return 1;}; };

int main()
{
std::vector<A *> AV;
// Заполняем контейнер AV указателями на производный класс B
// ...
std::for_each(AV.begin(), AV.end(), std::mem_fun<int,A>(&A::Foo)); // OK
// Хочу привести тип к B и вызвать его функцию-член для всех элементов средствами STL
std::for_each(AV.begin(), AV.end(), std::mem_fun<int,B>(&B::Boo)); // так нельзя ((, а как можно?
return 0;
}

Заранее благодарен,
Анатолий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.