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。
有件事我实在想不明白。以下情况:
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。