如何在实际的类中访问另一个类的对象的实例?

时间:2019-01-29 16:37:31

标签: c++ object access

我#highscore文件包含在我的标头中。现在,我在submarine.cpp中创建了它的对象,但是无论如何我都无法访问它。当我尝试时,写“高分”。为了向我展示其某些方法,它什么也没有显示,并告诉我之前声明的变量尚未使用。

Submarine::Submarine(QGraphicsItem* parent):QObject (),         
QGraphicsPixmapItem (parent)
{
Highscore *highscore = new Highscore;
QTimer * timer = new QTimer();
connect(timer,SIGNAL(timeout()),this,SLOT(die()));
timer->start(50);
}

void Submarine::doSomething()
{
highscore->increase(); (HERE)

如何在Submarine类的方法中获得高分?我必须在头文件中做更多的事情吗?

1 个答案:

答案 0 :(得分:0)

构造函数中发生内存泄漏:

Submarine::Submarine(QGraphicsItem* parent):QObject (),         
QGraphicsPixmapItem (parent)
{
Highscore *highscore = new Highscore; // <-- Your problem is here
QTimer * timer = new QTimer();
connect(timer,SIGNAL(timeout()),this,SLOT(die()));
timer->start(50);
} // <-- the highscore and timer pointers go out of scope here

在构造函数的末尾,指向Highscore实例的指针超出范围并丢失。您需要将其保存在Submarine类的成员变量中,以便随后在doSomething()方法中使用它。相同的问题适用于在构造函数主体中创建的QTimer *计时器指针。