Как я могу получить доступ к экземпляру объекта другого класса в моем реальном классе? - PullRequest
0 голосов
/ 29 января 2019

Я # включил файл рекордов в свой заголовок.сейчас я создаю объект этого объекта в моем 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 голосов
/ 29 января 2019

В вашем конструкторе есть утечка памяти:

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 *, созданному в теле конструктора.

...