我有一个问题,当 c++ 评估 while 语句时,即使不满足 while 语句条件,它也会评估基础 if 语句。
ite_candidats 是二叉映射树上的自定义迭代器。当没有更多节点可以访问时,ite_candidat 评估为 NULL。所以这段时间就结束了。但是,我从 ite_candidats.clecourante() 调用中得到一个断言失败,说我的底层节点是 NULL。它不应该评估 ite_candidats.clecourante() 因为它不是为了得到它。
我在调试模式下运行程序,当没有更多节点可以访问时, !!ite_candidats 真的评估为 false。如果我注释掉 if 块,程序就会退出 while 循环,一切正常......
ite_candidats 运算符 bool() 的运算符重载不会调用 clecourante()。
while(!!ite_candidats){
if(ite_candidats.clecourante() != nompersonne){
{...}
}
ite_candidats++;
}