![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Proger10 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Передо мной проблема: организовать классы игровых сцен. Сцены это как целый отдельный экран (меню, игровой экран, настройки, статистика - всё это сцены). Проблема в том, что сцену мне нужно менять внутри очередной сцены. Не удаётся сделать это. У меня есть класс Scene - базовый класс сцены. Есть класс SceneManager - он переключает сцены созданием нового экземпляра класса нужной сцены (и предварительным удалением прошлого, если такой был). Вот этот SceneManager мне и нужно вызвать из класса GameScene/MenuScene.
Вот что у меня сейчас получается:
Может кто знает как такую схему организовать лучше? Проблема моя в этой ошибке компилятора (XCode 4.6, MacOS):
Не нравится ему моя попытка передачи указателя, а по-другому и не знаю как вызвать SceneManager из внутреннего класса (GameScene, например), внутри которого экземпляр этого GameScene и создавался. Подскажите пожалуйста, что здесь можно сделать? Это сообщение отредактировал(а) Proger10 - 9.11.2013, 21:18 |
||||
|
|||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Работает, спасибо Это сообщение отредактировал(а) Proger10 - 9.11.2013, 22:05 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| Proger10 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
А утечки памяти здесь не будет? Ведь не вызывается деструктор и не уничтожается сама тело класса MenuScene/GameScene? Или мне в этом десткрукторе надо как-то удалить то, что создано на основе классов MenuScene/GameScene? Это сообщение отредактировал(а) Proger10 - 10.11.2013, 00:16 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Как это не вызывается? Вот для того мы и сделали деструтор виртуальным, чтобы вызывались деструкторые производных классов. В деструкторе базового/абстрактного класса (поскольку вы ничего там не создаете) ничо удалять и не нужно. А все что создали в производных классах, удаляйте в их-же деструкторах. Они (деструкторы) будут вызваны. Это сообщение отредактировал(а) volatile - 10.11.2013, 01:09 |
|||
|
||||
| Proger10 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Точно. Только что проверил, действительно, деструктор MenuScene также вызывается. Главное, не забыть, что в виртуальном базовом классе Scene деструктор также был витуальным. Кстати, а нужно ли наследуясь от виртуального класса Scene делать методы также виртуальными? Т.е. что-то типа:
Это сообщение отредактировал(а) Proger10 - 10.11.2013, 01:35 |
||||||
|
|||||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
| vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
При использовании современных компиляторов, реализующих C++11, это совершенно не имеет смысла, зато имеет смысл исопльзовать override.
|
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |