我正在設計一個枚舉系統中所有正在運行的進程的輸入迭代器類型。有效輸入迭代器的缺省構造
這與設計用於枚舉過程中模塊的迭代器很相似。模塊迭代器在構造函數中使用'process'對象,並且默認構造的迭代器被認爲是非臨時迭代器。
例子:
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。
謝謝。
編輯:
爲了澄清,我知道這是不可能的兩人在我上面貼的形式來區分,那麼我現在問的是比什麼都重要一個「設計」問題......也許我只是忽略了一些顯而易見的東西(不會是第一次)。
默認的構造元素是'end'迭代器,然後有另一個構造函數來構造'begin'狀態。然後編寫兩個非成員函數:'begin_modules()'和'end_modules()'。 –
@JamesMcNellis:我目前的解決方法是使用虛擬參數來表示'真正'的迭代器,所以這將很好地工作。 – RaptorFactor