Итератор подкласса отдельного включения - PullRequest
0 голосов
/ 20 ноября 2018

Я новичок в классе итераторов;не в том, как использовать итераторы для контейнеров, а в том, как реализовать класс итераторов.У меня есть два файла, .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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...