QGraphicsObject(0)而不是指针中的NULL

时间:2016-01-06 19:36:21

标签: c++ qt

我在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' 。有没有其他方法可以检查这些字段?

1 个答案:

答案 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