我正在尝试在我的应用程序中实现一个简单的“管道和过滤器”类型的架构。对于具有一个输入和一个输出类型参数的所有过滤器,我将拥有一个通用基类。我将为所有过滤器注册下一个过滤器,因此它们形成一个简单的链。我有一个小问题:我应该如何将下一个过滤器的输出类型表示为类型参数(如序言中的 _? - 下一个对象的输入应该与当前过滤器的输出匹配,但当前过滤器不应该知道输出类型下一个过滤器)。
class IFilter
{
std::auto_ptr<TIn> params;
IFilter *nextFilter;
public:
typedef TIn TInType;
typedef TOut TOutType;
void SetParams(std::auto_ptr<TIn> param) { ...irrelevant code... }
virtual void Execute() = 0;
void Register(IFilter<TOutType, ???> *filter) { ...irrelevant code... }
};