ファンクターを作業単位として使用するクラスがあります。Run()メソッドでファンクターへの参照を受け入れます。このクラスが任意のファンクターで動作できるようにするには、これらすべてのファンクターは、次のような基本ファンクタークラスから派生する必要があります。
class baseFunctor{
public:
virtual void operator()()=0;
virtual baseFunctor Clone()=0;
};
これは機能しますが、明らかに、これらのファンクターを、voidを返し、パラメーターを受け入れない演算子メソッドを持つように制限します。クラスで、任意のタイプのパラメーターを受け取り、何でも返すことができるファンクターを受け入れることができる必要があります。それは明らかに実行可能ですが、私はそれを行う方法を見つけることができないようです。テンプレート、多重継承の使用を検討しましたが、このファンクターを実行する必要のあるクラスは任意の型を受け入れることができなければならないため、基本クラスの型を受け入れるため、実際の型がわからないという事実に悩まされ続けています関手の。
どの道を見るべきかについての提案をいただければ幸いです。