使用“!”的 C++ 逻辑比较问题

C++ logical comparison issue using "!"

我刚刚完成了家庭作业,我 运行 变成了 "bug"(可能只是我太笨了);当两个堆栈都为空时,我想打破一个 while 循环。

这没用

while(!poles[0].ISEMPTY() && !poles[1].ISEMPTY){
      //iteratively solve towers of hanoi

这有效

while(poles[0].ISEMPTY()!= true && poles[1].ISEMPTY()!=true){
     //iteratively solve towers of hanoi

}

我觉得我遗漏了一些关于逻辑运算符的基本知识...我的意思是 ISEMPTY returns 布尔值,如果堆栈为空则为真。

你忘记了 ISEMPTY 第二次调用时的括号 :P

while(!poles[0].ISEMPTY() && !poles[1].ISEMPTY()){

修复它。 (您在工作示例中没有犯那个错误)。

鉴于指向函数的指针是非空的,它将始终计算为真。