Re: Вызов функции произв.класса внутри STL-алгоритма
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 11.03.05 12:17
Оценка: 2 (1)
Здравствуйте, Anfi, Вы писали:

A>Помогите новичку в STL.

A>Начитавшись корифеев STL, понял, что надо писать алгоритмы вместо циклов.
A>Как, не используя циклы, можно вызвать функцию член производного класса
A>для каждого элемента вектора указателей на базовый класс.

A>Иными словами, вызвать внутри STL-алгоритма функцию-член от производного класса

A>т.е. призвести приведение типа ЭЛЕМЕНТА контейнера перед вызовом функции-члена?

Ну а так-то почему нельзя сделать (если уж очень нужно):

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

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

void
call_Boo( A * p )
{
    ((B *)p)->Boo();
}

int main()
{
    std::vector<A *> AV;
    // Заполняем контейнер AV указателями на производный класс B 
    // ... 
    std::for_each(AV.begin(), AV.end(), std::mem_fun<int,A>(&A::Foo));
    std::for_each(AV.begin(), AV.end(), call_Boo );
    return 0;
}
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.