Syntax
class ItemPtrIterator
{
public:
bool IsDone(void) const { return mItem == nullptr; }
void operator++(void) { static_cast<IteratorType *>(this)->Advance(); }
void operator++(int) { static_cast<IteratorType *>(this)->Advance(); }
ItemType &operator*(void) { return *mItem; }
ItemType *operator->(void) { return mItem; }
bool operator==(const IteratorType &aOther) const { return mItem == aOther.mItem; }
bool operator!=(const IteratorType &aOther) const { return mItem != aOther.mItem; }
protected:
ItemPtrIterator(void)
: mItem(nullptr)
{
}
explicit ItemPtrIterator(ItemType *item)
: mItem(item)
{
}
ItemType *mItem;
};