@CaptainTrunky

C++, контейнер функторов?

Добрый день!

Стоит следующая задача: необходимо реализовать этакий конвеер, который принимает на вход некоторые данные, обрабатывает и выдает данные другого типа. Беда в том, что этапы конвеера принимают и выдают данные разных типов. В псевдокоде я вижу это так:
class BaseStage
{
//Interface of stage
};
class Stage1: BaseStage
{
    int operator()(SomeType data);
};
class Stage2: BaseStage
{
    float operator()(SomeType data);
};

class Line
{
    std::vector<BaseStage> _line;
    std::vector<BaseStage>::iterator _it;
    void func()
    {
        _it = _line.begin();
        SomeType oldData, newData;
        while (_it != _line.end())
        {
            newData = (*it)(oldData);
            oldData = newData;
        }
    }
};


Корректно ли использовать вместо SomeType void* и reinterpret_cast (тогда каждый этап в operator() будет проводить соответсвующее приведение типов)? Возмжно уже есть реализации похожего подхода? Быть может это излишне сложная конструкция, которая не более чем гимнастика ума? Заранее спасибо за советы/критику.)
  • Вопрос задан
  • 2762 просмотра
Пригласить эксперта
Ответы на вопрос 1
xanep
@xanep
Смотрите Александреску «Современное проектирование на С++». Глава 5 «Обобщенные функторы».
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы