指针声明超出范围错误

时间:2014-05-05 23:18:24

标签: c++

    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被声明,所以错误变得令人着迷。是否有任何好的方法来创建新的播放器位置,然后在创建新的播放器位置后删除旧的播放器位置。

2 个答案:

答案 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 ++,如果我理解你的目标,我强烈建议你研究类和封装。