システムで実行中のすべてのプロセスを列挙する入力反復子型を設計しています。
これは、プロセス内のモジュールを列挙するために私が設計した反復子に似ています。モジュール反復子は、コンストラクターで「プロセス」オブジェクトを受け取り、デフォルトで構築された反復子は、オフザエンド反復子と見なされます。
例:
hadesmem::ModuleIterator beg(process);
hadesmem::ModuleIterator end;
assert(beg != end);
ただし、イテレータに与える必要がある「状態」や情報がないため、プロセスの列挙についてどうすればよいかわかりません (すべては、Windows API を使用してイテレータによって内部的に処理されます)。
例:
// This is obviously a broken design, what is the best way to distinguish between the two?
hadesmem::ProcessIterator beg;
hadesmem::ProcessIterator end;
この状況に対処するための慣用的な方法は何ですか? つまり、イテレータ コンストラクタに何も指定する必要がない場合に、「新しい」イテレータの作成とオフザエンド イテレータの作成を区別する必要がある場合。
関連する場合は、VC11、GCC 4.7、および ICC 12.1 でサポートされている限り、このライブラリで C++11 を使用できます。
ありがとう。
編集:
明確にするために、私が上に投稿した形式では 2 つを区別することはできないことを知っているので、私が求めているのは、何よりも「デザイン」の質問です...多分私は何かを見落としているだけです明らかですが(初めてではありません)。