有一件事我真的不明白。正在发生的情况:
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循环中使用它?
答案 0 :(得分:2)
您错过了const
。
尝试一下:
const std::list<Item*>& getItems() const { return m_items; }
您需要const,因为调用showSomething
的{{1}}方法是const。