![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
В заголовочном файле находится объявление класса.
В приватной секции используются типы, описанные в другом заголовочном файле (TerribleDefs.h). Пользователи класса используют публичные функции-члены, но вынуждены так же иметь доступ к модулю TerribleDefs.h. Варианты: - создать дополнительный класс-интерфейс, в котором будут описаны только публичные методы, и от него наследовать рабочий класс, пользователям достаточно включения только класса интерфейса. - в заголовочном файле, в описании класса, в приватных секциях использовать типы void*, в реализации приводить к нужным. Оба способа, imho, не попадают под определение "элегантный". Как обходитесь в такой ситуации вы? |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| semibug |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 27.3.2009 Репутация: нет Всего: нет |
azesmcar, гуд, спасибо!
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
На мой взгляд, первый вариант (отделить интерфейс) вполне элегантный и практически эквивалентен варианту PIMPL. Выбор зависит от задачи, доп. условий и личных предпочтений. Доп. условия - это, например:
- желательно не использовать виртуальные функции -> используем PIMPL; - есть легкое ощущение, что в будущем потребуются различные реализации -> интерфейс. Кстати, под "интерфейсом" можно понимать не только набор чисто-виртуальных функций. Например, есть набор параметров какого-либо процесса, с которым удобнее работать как со структурой. Но использующему ее коду совершенно не нужно знать как эти данные хранятся и добываются. В таком случае я объявляю в интерфейсном файле структуру с нужными полями и статической функцией Instanсe, возможно с параметром. А реализуется этот набор параметров как производная от какого-нибудь класса, который умеет храниться в профиле или где-то еще... -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |