私は、ファンクションを作業単位として使用するクラスを持っています。 Run()メソッドでファンクタへの参照を受け入れます。このクラスは、任意のファンクタを操作できるようにするには、これらすべてのファンクタは次のようになり、私の基本数子クラスから派生しなければなりません:これは動作します任意の戻り値の型と任意のパラメータを持つ派生Functor
class baseFunctor{
public:
virtual void operator()()=0;
virtual baseFunctor Clone()=0;
};
、しかし、明らかにそれはvoidを返す演算子メソッドを持つことにこれらのファンクタを制限し、パラメータを受け付けません。私はクラス内の任意の型のパラメータを取って何かを返すことができるファンクタを受け入れることができる必要があります。それは明らかにできませんが、私はそれを行う方法を見つけることができないようです。私はテンプレート、多重継承を使用することを検討しましたが、このファンクタを実行する必要があるクラスはどの型でも受け入れることができなければならないため、基本クラス型を受け入れますので、実際の型は分かりませんファンクタの
どのような道を見るかについてのご意見をいただければ幸いです。
これは意味があります。クラスを作成し、それを渡すメインクラスは、どの型のファンクタか、それ以外のファンクタを受け取るクラスを知り、単にoperator()メソッドを呼び出します。情報のおかげで訪問者のパターンを調べます。 –