#pragma once #include "ifaces/IIterator.h" /// \brief Базовый итератор. /// \tparam T Тип итерируемого элемента. /// Предоставляет базовую реализацию методов для работы с итерируемыми объектами. template class BaseIterator : public IIterator { protected: T* current; public: explicit BaseIterator(T* ptr) : current(ptr) {} T& operator*() const override { return *current; } T* operator->() const override { return current; } virtual operator const T*() const { return current; } bool operator!=(const IIterator& other) const override { const T* other_current = other; return current != other_current; } };