Сообщение от pozitiffcat
Как видите, тут нем void main(), вместо этого реализуется класс с интерфейсом m3iRootApplication, и метод createRootApplication, который вызовет движок при создании.
|
Делаю у себя подобным образом, удобно тем что базовый класс уже может иметь определённый функционал, и тем что его интерфейс задает некоторую структуру и ритм показывающую как лучше создавать приложение.
Если я правильно понимаю initialize и render это переопределённые методы базового класса, просто не видно из контекста, я бы использовал слово override -- оно предотвратит ошибку неправильного переопределения и просто более читабельно выглядит, не нужно подглядывать в базовый класс чтобы смотреть что у него виртуальное.
Ещё вот я делаю так:
int main( int, const char*[] ) {
engine eng;
application app;
eng.launch( app );
return 0;
}
То есть созданием/удалением и движка и приложения занимается сама среда, а не кто-то из этих двух объектов.
А также не требуется использовать указатели -- ссылки более безопасный вариант.
К тому же можно сделать вот так и не беспокоиться об утечке памяти, в случае непредвиденных выбросов.
int main( int, const char*[] ) try {
engine eng;
application app;
eng.launch( app );
return 0;
} catch ( const myExcept& ex ) {
// Обрабатывает myExcept.
} catch ( ... ) {
// Обрабатываем любое другое исключение.
}