const_iterator 过度引用指针列表

const_iterator over referenced list of pointers

有件事我实在想不明白。以下情况:

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()。错误翻译成 "type qualifier is not compatible with member function getItems ... the Object is const Test".

我知道 getItems() returns 是对项目指针列表的常量引用。但是为什么不能在for循环中使用呢?

你错过了 const

试试这个:

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

您需要 const,因为 showSomething 调用 getItems 的方法是 const。