const_iterator超过引用的指针列表

时间:2019-06-22 19:08:54

标签: c++ class object reference const-iterator

有一件事我真的不明白。正在发生的情况:

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告诉我,这不起作用,并在for循环中强调了getItems()。该错误翻译为“类型限定符与成员函数getItems不兼容...对象为const测试”。

我知道getItems()返回对项目指针列表的const引用。但是为什么不能在for循环中使用它?

1 个答案:

答案 0 :(得分:2)

您错过了const

尝试一下:

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

您需要const,因为调用showSomething的{​​{1}}方法是const。