Тема: Melissa Project
Показать сообщение отдельно
Старый 24.10.2014, 16:18   #4
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: Melissa Project

Сообщение от 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 ( ... ) {
    // Обрабатываем любое другое исключение.
}
(Offline)
 
Ответить с цитированием