const_iterator по ссылочному списку указателей - PullRequest
0 голосов
/ 22 июня 2019

Есть вещь, которую я действительно не могу понять.Следующая ситуация:

Файл Test.h:

class Test{
    public:
        const std::list<Item*>& getItems() { return m_items; }
        void showSomething() const;
    private:
        std::list<Item*> m_items;
}

Файл Test.cpp:

void Test::showSomething() const{
    for (std::list<Item*>::const_iterator item_it = getItems().begin(); item_it != getPlayers().end(); item_it++) {
        doSomething();
    }
}

Visual Studio сообщает, что это не работает, и подчеркиваетgetItems () в цикле for.Ошибка переводит что-то вроде «Спецификатор типа не совместим с функцией-членом getItems ... Объект является const Test».

Я знаю, что getItems () возвращает константную ссылку на список Item-Pointers.Но почему я не могу использовать его в цикле for?

1 Ответ

2 голосов
/ 22 июня 2019

Вы пропустили const.

Попробуйте это:

const std::list<Item*>& getItems() const { return m_items; }

Вам нужен const, потому что метод showSomething, из которого вызывается getItems, называется const.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...