E:\bird\bird\bird\bird.cpp:45: error: no match for 'operator==' (operand types are 'QPixmap' and 'QPixmap') } else if (m_currentImage == QPixmap(":/rec/bird1.png")) { ^
时间: 2024-04-15 22:30:25 浏览: 232
抱歉,再次犯了同样的错误。在C++中,`QPixmap`类没有重载`==`运算符,因此不能直接使用`==`来比较两个`QPixmap`对象。你可以使用`QPixmap::operator==()`来比较两个`QPixmap`对象是否相同。请修改你的代码如下:
```cpp
void Bird::animate() {
// 切换小鸟的图像
if (m_currentImage.operator==(QPixmap(":/rec/bird1.png"))) {
m_currentImage = QPixmap(":/rec/bird2.png");
} else if (m_currentImage.operator==(QPixmap(":/rec/bird2.png"))) {
m_currentImage = QPixmap(":/rec/bird3.png");
} else {
m_currentImage = QPixmap(":/rec/bird1.png");
}
// 更新小鸟的显示
m_Plane.setPixmap(m_currentImage);
}
```
这样,你的代码将会切换小鸟的图像并更新显示。如果你还有其他问题,请随时提问。
相关问题
E:\bird\bird\bird\bird.cpp:43: error: no match for 'operator==' (operand types are 'QPixmap' and 'QPixmap') if (m_currentImage == QPixmap(":/rec/bird1.png")) { ^
抱歉,我的错误。在C++中,`QPixmap`类没有重载`==`运算符,因此直接使用`==`来比较两个`QPixmap`对象。相反,你可以使用`QPixmap::isNull()`函数来检查`QPixmap`对象是否为空,或者使用`QPixmap::operator!=()`运算符来比较两个`QPixmap`对象是否不同。请修改你的代码如下:
```cpp
void Bird::animate() {
// 切换小鸟的图像
if (m_currentImage.isNull()) {
m_currentImage = QPixmap(":/rec/bird1.png");
} else if (m_currentImage == QPixmap(":/rec/bird1.png")) {
m_currentImage = QPixmap(":/rec/bird2.png");
} else if (m_currentImage == QPixmap(":/rec/bird2.png")) {
m_currentImage = QPixmap(":/rec/bird3.png");
} else {
m_currentImage = QPixmap(":/rec/bird1.png");
}
// 更新小鸟的显示
m_Plane.setPixmap(m_currentImage);
}
```
这样,你的代码将会切换小鸟的图像并更新显示。如果你还有其他问题,请随时提问。
E:\bird\bird\bird\mainscene.cpp:82: error: no match for 'operator+' (operand types are 'QRect' and 'int') if (m_bird.m_X+ m_bird.m_Rect.width() >= m_barriers[i-1].m_X && m_bird.m_X <= m_bird.m_Rect + m_barriers[i-1].m_Rect.width() && ^
这个错误发生在 E:\bird\bird\bird\mainscene.cpp 文件的第 82 行。错误信息在这一行中,有一个不配的运算符 '+',操作数类型为 'QRect' 和 'int'。
根据代码推测,这个错误可能是因为在计算矩形的右边界时,使用了错误的运算符。应该使用矩形的左上角横坐标 m_bird.m_X 加上矩形的宽度 m_bird.m_Rect.width()。正确的表达式应该是:
m_bird.m_X + m_bird.m_Rect.width()
请检查并修复这行代码。
阅读全文