C++ 只有在我没有';t捕获addPixmap的返回值

C++ 只有在我没有';t捕获addPixmap的返回值,c++,qt,C++,Qt,我试图从一个对象的方法中画出一个qgraphicscene。代码如下所示: void Enemy::draw(QGraphicsScene *scene) { //Works scene->addPixmap(pixmap); //Doesn't work pixmapItem = scene->addPixmap(pixmap); } pixmap是QPixmap类型敌人的成员,pixmapItem是QGraphicsPixmapItem*类型敌人

我试图从一个对象的方法中画出一个qgraphicscene。代码如下所示:

void Enemy::draw(QGraphicsScene *scene) {
    //Works
    scene->addPixmap(pixmap);
    //Doesn't work
    pixmapItem = scene->addPixmap(pixmap);
}
pixmap
QPixmap
类型敌人的成员,
pixmapItem
QGraphicsPixmapItem*
类型敌人的成员

为什么将addPixmap的返回值指定给指针会阻止显示pixmap

编辑:进一步的调查表明

QGraphicsPixmapItem *pointer = scene->addPixmap(pixmap);
行得通

将本地指针的值赋给pixmapItem会使其再次停止工作:

QGraphicsPixmapItem *pointer = scene->addPixmap(pixmap);
//doesn't work now
pixmapItem = pointer;

您是否真的在一行中进行两次加法,并希望看到两个像素贴图?如果是这样的话,它们都在(0,0)并且重叠,所以第二个看起来没有效果。如果您的意思是说您有两个不同的敌人::draw实现,其中一个分配返回值,那么我怀疑问题是后来出现的,因为您在pixmapItem不为null时使用了它(删除它?),我通过尝试每个实现对其进行了测试。如果我注释掉
scene->addPixmap(pixmap)
行,并保留上面的其他行,则不会显示任何内容。如果我注释掉
pixmapItem=scene->addPixmap(pixmap)并保留上面的其他行,PixMax出现了。我很想看到一个最小的可编译的示例来演示这个……我在它周围工作,但是我会考虑一旦我完成了这个问题,就再回来看看这个行为。