Добрый день!
Стоит следующая задача: необходимо реализовать этакий конвеер, который принимает на вход некоторые данные, обрабатывает и выдает данные другого типа. Беда в том, что этапы конвеера принимают и выдают данные разных типов. В псевдокоде я вижу это так:
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() будет проводить соответсвующее приведение типов)? Возмжно уже есть реализации похожего подхода? Быть может это излишне сложная конструкция, которая не более чем гимнастика ума? Заранее спасибо за советы/критику.)