を格納するクラス変数対静的関数の変数を使用すると、私はこのような機能を持っているとしましょう:いくつかの状態
void processElement() {
doSomething(someArray[lastProcessedElement + 1]);
}
事は、この関数が呼び出されるたびに、私は店に私が呼ばれる最後の要素が必要であり、 doSomething on。だからここに私は2つの選択肢があります。
私はlastProcessedElementという名前のプライベートクラス変数を作成し、その関数が呼び出されるたびに値だインクリメントすることができます。このアプローチは最も一般的です。コードはこのようなものになることができるように:
class Foo { int lastProcessedElement = 0; public: void processElement() { doSomething(someArray[++lastProcessedElement]); } }
目のオプションとして、私は、関数内で静的変数を作成し、そのたびにインクリメントすることができます
// Class is not important here, so the function is: void processElement() { static int lastProcessedElement = 0; doSomething(someArray[++lastProcessedElement]); }
は最初のソリューションが追加されます私はほしくない少し複雑さ。私は物事をその場で保つのが好きです。
私は2番目の解決策は、そのクラスが1つのインスタンスしか持たない場合にのみ動作することを知っています。
静的変数メソッドを使用するのは良い解決策ですか?そして、マルチインスタンスクラスのインラインソリューションはありますか? (この特定の配列要素インデックスの事柄に対する解決策があるかもしれませんが、私はそれを作成しました、関数の次の呼び出しのための値を格納することを話しています)
'lastProcessedElement'を' processElement'に渡すこともできます。 – erip
呼び出し元が処理する要素がわからないとしましょう。 – isamert