データを処理するための関数をいくつか呼び出すアルゴリズムがあります。これらの関数のそれぞれは、同じ変数の多くを共有し操作します。したがって、私は、特にこれらの変数の多くがSTLコンテナであるため、読み込みが非常に困難になることが判明したときに、参照引数の長いリストを含む一連の関数を避けるようにしています。おそらくより良い方法があるかどうかを確認するために、私はちょうど好奇心だ関数を使ってファンクタを呼び出す
class myfunctor {
private:
... list of shared members ...
void A(..args..) { ..do some work on shared members.. }
void B(..args..) { ..do some work on shared members.. }
void C(..args..) { ..do some work on shared members.. }
public:
void operator()(class1& X, class2& Y) {
A(..);
..
B(..);
..
C(..);
..etc..
}
};
void algorithm(class1& X, class2& Y) {
myfunctor obj;
obj(X, Y);
}
以下のようにその結果、私は、アルゴリズムの作業を実行するためにファンクタを実装し、ファンクタのための機能のラッパーを定義していますすべて同じ変数に依存するいくつかの関数を実装し、これが悪い習慣とみなされているかどうか?
@anon - 。ああ、私は前にそれらに気づいたことがありません。通知をありがとう。 – entitledX
なぜこれを関数ではなくファンクタにするのですか?引数リストが本当に扱いにくい場合は、なぜA(class1&X、class2&Y)、B(class1&X、class2&Y)などはありませんか? – Beta
関数内でXとYはどのように使用されますか?このコードサンプルでは、あなたがしようとしていることが非常に不明です。具体的な例を挙げることはできますか?あなたの説明から、関数がメンバ関数でなければならないように思えます。 –