我在Qt的一个小游戏中工作。我有一块电路板,每个字段都有指向单元的指针。在开始指针设置为NULL。我想在移动之前检查我单位周围的字段,但是
this->getRoom(-325,-325)->getUnit();
返回" QGraphicsObject(0)"不只是" NULL"正如我所料。我已经改变了我的if指令:
if(this->getRoom(-325,-325)->getUnit()==0)
为:
if(this->getRoom(-325,-325)->getUnit()==QGraphicsObject(0))
但现在我得到:无效的演员表抽象类类型' QGraphicsObject' 。有没有其他方法可以检查这些字段?
答案 0 :(得分:1)
我猜你实际上并没有尝试将它与null进行比较?尝试有什么害处? :)它会有效:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsItem *rect = 0;
qDebug() << "is" << rect << "null?" << (rect == 0);
return 0;
}
正在发生的是该类型的<<
运算符has been defined:
if (!item) {
debug << "QGraphicsItem(0)";
return debug;
}
因此,当您将其打印出来时,会调用此函数并尝试打印有用的内容而不仅仅是内存地址。它看到指针为空,因此它打印出类型(QGraphicsItem
)和0
。