有没有办法声明一个迭代器,它是一个类中的成员变量,并且可以使用成员函数递增,即使该类的对象是const。
答案 0 :(得分:7)
那将是“mutable”关键字。
class X
{
public:
bool GetFlag() const
{
m_accessCount++;
return m_flag;
}
private:
bool m_flag;
mutable int m_accessCount;
};
答案 1 :(得分:5)
您确定需要迭代器作为成员吗?迭代器有能力:它们变得无效。这是设计问题的一个小标志。
答案 2 :(得分:3)
声明它是可变的,而不是易变的。
答案 3 :(得分:-1)
知道了。
using namespace std;
class tmptest
{
public:
void getNextItr()const
{
m_listItr = m_list.begin();
m_listItr++;
}
list<string> m_list;
mutable list<string>::const_iterator m_listItr;
};
与const_iterator
一起变异。谢谢你提醒我可变与易变。
我变得容易混淆与变异。再次感谢!