Я новичок в классе итераторов;не в том, как использовать итераторы для контейнеров, а в том, как реализовать класс итераторов.У меня есть два файла, .h и .cpp.Прямо сейчас я получаю ошибку компилятора в моем файле .cpp, который отображает " фатальная ошибка: 'iterator' не является классом, пространством имен или перечислением ".Я не понимаю, почему это говорит мне об этом.
Примечание: Я уверен, что в моем коде есть другие ошибки, но сейчас я просто пытаюсь получить существующий компиляторошибка устранена.
Base.h
#ifndef Base_h
#define Base_h
class Base {
protected:
std::vector<std::vector<std::string> > vec;
public:
class iterator {
private:
Base* p = nullptr;
size_t x, y;
public:
iterator() = default;
iterator(Base *, size_t, size_t);
~iterator();
iterator &operator++();
Base operator*() const;
}
iterator begin() const;
iterator end() const;
// bunch of other iterator::functions and Base::functions
};
#endif
Base.cpp
iterator::iterator(Base *b, size_t i, size_t j): p(b), x(i), y(j) {}
iterator::~iterator();
// Bunch of other iterator::functions including Base::functions
Ошибка компилятора
Base.cc:254:13: fatal error: 'iterator is not a class, namespace, or enumeration
iterator::iterator(Base *b, size_t i, size_t j): p(b), x(i), y(j) {}
^
/Library/Developer/CommandLineTools/usr/include/c++/v1/iterator:522:29: note: 'iterator' declared here
struct _LIBCPP_TEMPLATE_VIS iterator