迭代问题。我认为问题与const正确性有关。我假设B :: getGenerate()应该是const,这个代码可以工作,但是我无法控制B :: getGenerate()。
非常感谢任何帮助。
提前致谢, JBU
代码如下:
int
A::getNumOptions() const
{
int running_total = 0;
BList::const_iterator iter = m_options.begin();
while(iter != m_options.end())
{
if(iter->getGenerate()) //this is the line of the error; getGenerate() returns bool; no const in signature
{
running_total++;
}
}
return running_total;
}
1>。\ A.cpp(118):错误C2662:'B :: getGenerate()':无法将'this'指针从'const B'转换为'B&'
答案 0 :(得分:3)
好吧,如果getGenerate
是非const的,那么你的迭代器必须是非const的。如果是这种情况,您的getNumOptions
也必须是非常数。
如果您无法控制getGenerate
,则无法执行任何其他操作。但是,如果该方法可能 const
,请将其与实施该方法的人一起提出;告诉他们应该const
。
答案 1 :(得分:1)
B :: getGenerate()需要像这样声明:
class B
{
bool getGenerate() const;
};
'const'关键字在这里很重要。这告诉编译器调用getGenerate()不会修改B的任何其他成员。