指针声明超出作用域错误
pointer declared out of scope error
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已被声明,所以错误变得令人困惑。是否有好的方法来创建新的播放器位置,然后在创建新的播放器位置后删除旧的播放器位置
如果我正确理解了你的描述,你想让playerLoc
指向一个新的对象。你不需要为此目的删除指针,只需重新定义它,例如playerLoc = scene2->addEllipse(locaytion.getLocation(0),locaytion.getLocation(1),5,5,QPen(Qt::black),QBrush(Qt::black));
,当然addEllipse
函数必须返回相同类型的指针。
我如何创建这个函数,使它创建一个新对象,在同一指针下,但删除旧对象?
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++编程的,而且如果我对你的目标理解正确的话,我强烈建议你研究一下类和封装。
相关文章:
- 错误:表达式必须具有算术、无作用域枚举或带有运算符重载的指针类型
- 重载时未在 C++ 的作用域错误中声明
- C2675 一元运算符由错误的作用域引起
- 在 C++ 中使用 "transform" 会给出一个错误,指出这未在作用域中声明
- C++/错误:表达式必须具有整数或无作用域枚举类型
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 错误:以增量方式填充向量时,表达式必须具有整数或无作用域枚举类型
- 在一个作用域中推送五个对象指针,然后检查对象的布尔值是否为 false,会给出错误
- 错误:数组大小表达式必须具有整型或无作用域枚举类型,而不是'double'
- 错误"未在作用域中声明",但带有接口
- 错误:未在此作用域c++中声明"length"
- 错误:未在此作用域中声明"fileno"
- 错误/usr/include/string.h:652:42:错误:生成caffe时未在此作用域中声明“memcpy”
- C++中的类作用域错误(CLOSED)
- stl的依赖作用域错误
- 声明友元函数时出现变量作用域错误
- 作用域错误,函数没有声明
- 从模板继承:作用域错误
- 指针声明超出作用域错误
- “开关”语句的作用域错误