if (moveTicker > 0) {
delete playerLoc;
}
moveTicker++;
QGraphicsEllipseItem * playerLoc = scene2->addEllipse(locaytion.getLocation(0),locaytion.getLocation(1),5,5,QPen(Qt::black),QBrush(Qt::black));
当编译器得到这个时,表示playerLoc被调用超出范围,我得到它因为它应该在if语句之后被调用,但if语句将不会运行,直到playerLoc被声明,所以错误变得令人着迷。是否有任何好的方法来创建新的播放器位置,然后在创建新的播放器位置后删除旧的播放器位置。
答案 0 :(得分:1)
如果我已正确理解您的描述,您希望playerLoc
指向一个新对象。您不需要为此目的删除指针,只需再次定义它,例如playerLoc = scene2->addEllipse(locaytion.getLocation(0),locaytion.getLocation(1),5,5,QPen(Qt::black),QBrush(Qt::black));
当然函数addEllipse
必须返回一个具有相同类型的指针。
答案 1 :(得分:0)
如何创建此功能呢 在同一指针下创建一个新对象,但删除旧对象?
QGraphicsEllipseItem * playerLoc = /* ... first declaration and definition */
if (moveTicker > 0) {
delete playerLoc;
}
moveTicker++;
playerLoc = scene2->addEllipse(locaytion.getLocation(0),locaytion.getLocation(1),5,5,QPen(Qt::black),QBrush(Qt::black));
// you can just redefine it
但是既然你编写了C ++,如果我理解你的目标,我强烈建议你研究类和封装。