Дайте совет, Написал парсер получилось не ООП |
Здравствуйте, гость ( Вход | Регистрация )
Дайте совет, Написал парсер получилось не ООП |
FakeMoNEy |
6.7.2013, 15:34
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.11.2012 Пользователь №: 3612 Спасибо сказали: 0 раз(а) Репутация: 0 |
Написал небольшой парсер для BSDL файлов, но получилось как-то функционально что ли, я не смог выделить абстракции, к тому же приходится создавать объект парсера, затем вызвать функцию и передавать ему имя файла и объект для того что он разобрал(jtagDevice), мне кажется можно проще или более гибко но не могу придумать как, плюс зачемто унаследовал его от QObject что было лишним это я уберу, с помощью него разбираю отдельно файлы или папки вызывая для каждого файла parse(), еще вопрос как обрабатывать ситуации когда он не нашел чегото, можно ли использовать исключения или они не подходят и это будет избыточным, пока что просто вывожу в консоль если чтото не так, еще не встречал файла с ошибкой.
Вот класс: Раскрывающийся текст
И еще вопрос Допустим есть два класса
Мне нужно хранить много экземпляров этих класов, я создал класс хранилище который хранит указатели на базовый класс в векторе, дает доступ к желементам и еще какойто функционал. Я передаю в вектор указатели на объект так push(new Obj1()) push(new Obj2()). Соответственно обратно тоже указатель на базовый класс. Удаляю обьекты в деструкторе хранилища
Если комуто не лень скажите пожалуйста 1)Это хорошее решение хранить указатели а не объекты, и удалять их в деструкторе вышеописанным образом 2)Можно ли так использовать наследование как в Obj1 Obj2 или стоит определить виртуальный класс и два наследника(или вобще хранить все в одном и определять тип как пустая строка Str_Child или нет, что в принципе я и собираюсь делать с классами Obj1 Obj2 тк нужно определять тип) 3) Как выбрать хранить указатель на данные (str_Base,str_child) или переменные. Спасибо всем ответившим и прочитавшим до конца. |
|
|
Litkevich Yuriy |
6.7.2013, 19:44
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Правило создания тем:
одна проблема - одна тема У тебя намешано две две совершенно не связанные проблемы в одной теме. Создавай для второй проблемы отдельную тему. |
|
|
Алексей1153 |
8.7.2013, 9:37
Сообщение
#3
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
от QObject наследовать в данном случае не нужно, как мне показалось ))
у Obj1 у тебя странный конструктор - Obj2 1 - хранить указатели в массиве - нормально, главное не забыть подчищать в деструкторе, ну и при удалении отдельного объекта во время работы 2 - не совсем понятен вопрос. Но каскадное наследование возможно, в том числе и виртуальное 3 - зависит от конкретного случая |
|
|
Iron Bug |
8.7.2013, 13:34
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
|
|
|
Текстовая версия | Сейчас: 2.1.2025, 21:09 |