我有一个使用函子作为工作单元的课程。它在其 Run() 方法中接受对仿函数的引用。要允许此类对任何函子进行操作,所有这些函子必须派生自我的基函子类,如下所示:
class baseFunctor{
public:
virtual void operator()()=0;
virtual baseFunctor Clone()=0;
};
这可行,但显然它将这些函子限制为具有返回 void 且不接受任何参数的运算符方法。我需要能够在我的类中接受一个函子,它可以接受任何类型的参数并返回任何东西。它显然是可行的,但我似乎无法找到一种方法来做到这一点。我曾考虑过使用模板、多重继承,但我一直受到以下事实的阻碍:需要运行此函子的类必须能够接受任何类型,因此将接受基类类型,因此不知道实际类型的函子。
任何有关查看途径的建议将不胜感激。