![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Хоббит |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1263 Регистрация: 6.11.2005 Репутация: нет Всего: 1 |
Создаем мы некоторый класс. Его объявление.
А теперь реализация
А теперь вопрос. Одному мне не нравится в реализации 1. Необходимость постоянно повторять template <typename T> Vector<T> ... 2. Отсутствие наглядной структуры класса (не ясно какой метод public, какой private Я конечно понимаю, что объявлять отдельно интерфейс это хорошо и то-то определение методом можно и в класс втроить, но это не очень хорошо. Но все же. Может есть какие-то способы "оформления" реализации, чтобы она была более понятной. |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
реализацию шаблонных(и не только) классов всегда пишу прям в декларации.
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Если учесть, что для шаблонного класса вам все равно придется (прямо или косвенно) включить все тела методов в хидер, то описание методов прямо в теле класса (только для шаблонных классов!) выглядит вполне нормально |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
1. Мне тоже не нравится 2. Почему же ? Как раз для наглядности (!!!) и делается разделение на объявление и реализацию. Я, например, частенько разбиваю на 2 файла (*.h и *.hpp). В *.h делаю объявление и инклюдаю соответствующий *.hpp, в котором и делаю реализацию. Во-первых, *.h-ник легко читается, во-вторых в *.cpp-ник (или в другой *.h-ник) инклюдается только маленький, простенький и понятный *.h. ИМХО - нормальный подход Это сообщение отредактировал(а) borisbn - 12.1.2012, 13:51 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
Та же фигня, но *.h/*.hpp + *.inl
Если нетрудно, то расскажите, откуда взяли h+hpp (именно такая связка, отдельный hpp - это, обычно, хидер C++, но больше дело вкуса) и impl (что-то новенькое)? Это сообщение отредактировал(а) spyswamp - 12.1.2012, 20:38 -------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
наверное это последствия какой-то дисциплины программирования.
так, к примеру, есть проекты в которых используются расширения .cxx/.hxx, .cc/.hh, .C/.H от implementation. |
|||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
boostcoder, спасибо, кэп.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |