invalid operands of types ‘void’ and ‘int’ to binary ‘operator!=’ while(m.pop()!=ha){ ~~~~~~~^~~~
时间: 2024-09-12 20:02:04 浏览: 210
在编程中,错误信息 "invalid operands of types ‘void’ and ‘int’ to binary ‘operator!=’" 指的是你尝试在一个返回类型为 void 的表达式上使用了不等于操作符 `!=`。在C++中,函数或操作如果声明为返回 void 类型,则它实际上不返回任何值。因此,不能在 void 类型的返回值上使用任何比较操作符。
在你给出的代码片段 `while(m.pop()!=ha){` 中,`m.pop()` 函数很可能是声明为返回 void 类型的,因此当你尝试使用 `!=` 进行比较时,编译器报错。
例如,下面的代码将会导致这个错误:
```cpp
void myFunction() {
// ...
}
while(myFunction() != 0) {
// ...
}
```
因为 `myFunction()` 没有返回值,所以不能与 `0` 进行比较。
正确的做法取决于 `m.pop()` 函数的预期行为。如果 `m` 是一个容器,比如栈或队列,并且 `pop` 方法是用来弹出并返回栈顶或队首元素的,那么它应该返回一个元素类型。如果 `ha` 是该元素类型的一个实例,那么代码可能是正确的。但如果 `m.pop()` 是一个返回 void 的操作,并且你想比较栈顶元素与 `ha` 是否不相等,你需要先调用一个返回栈顶元素的函数,比如 `top()`,然后再进行比较。例如:
```cpp
while(m.top() != ha){
m.pop();
}
```
在上述代码中,我们首先获取栈顶元素进行比较,如果不同,我们调用 `pop()` 来移除栈顶元素,直到栈为空或者栈顶元素等于 `ha`。
阅读全文
相关推荐


















