Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Стоит ли полностью определять класс в заголовочном файле?  (Прочитано 9631 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« : 17-02-2008 07:02 » 

Sands, зачем тебе реализация в h файле? я бы выташил реализацию в cpp и если необходимо использовать в нескольких проектах, то в отдельную lib
Записан

Странно всё это....
Sands
Помогающий

ua
Offline Offline

« Ответ #1 : 17-02-2008 10:07 » 

LogRus, Я бы тоже так сделал, но руководство попросило без либы и все в h-файле )))
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #2 : 17-02-2008 12:09 » 

Sands, скажи руковоЦтву, что оно нарушает правила компилятора Улыбаюсь Скажи - так нужно, чтобы класс был в двух файлах, и объясни, почему. И покажи примеры - везде так делается
Записан

Sands
Помогающий

ua
Offline Offline

« Ответ #3 : 17-02-2008 12:31 » 

Алексей1153++, Хороший метод. А руководство возьмет и покажет примеры из STL(ведь именно там Вад нашол ответ на проблемый вопрос) или ATL где сделано так, как оно хочет. ))) И что дальше? Мы с руководством устроим холивар, но как известно "Начальник всегда прав" )) А остаться без финансового вознаграждения как-то неохота ))))
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #4 : 17-02-2008 12:56 » 

Sands, я не пользуюсь STL или ATL , поэтому возражение не принимается Улыбаюсь А кроме того, моё начальство ставит лишь одно условие - чтобы работало, не тормозило, было удобно  и красиво. А всё остальное - это моё дело Улыбаюсь Так что, тебе всё же виднее, как поступить
Записан

Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 17-02-2008 13:38 » 

Sands, смотря какой размер твоего класса и каково его назначение. Если класс большой, то проще вынести определения методов в .cpp и включать прямо вместе с .cpp в другой проект (если таких классов всего 1-2, то затевать для них библиотеку, может, и не стоит Улыбаюсь ). Если маленький и все методы по строчке кода - не вижу ничего плохого, если он весь в заголовке.
Алексей1153++, STL - это часть стандарта языка, что значит, ты её не используешь? Улыбаюсь
Записан
zubr
Команда клуба

by
Offline Offline
Пол: Мужской

« Ответ #6 : 17-02-2008 19:29 » 

Насколько я помню, при использовании шаблонов, разделить реализацию не получится при всем желании.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 18-02-2008 07:17 » 

Цитата: zubr
Насколько я помню, при использовании шаблонов, разделить реализацию не получится при всем желании.
В том смысле, что методы параметризированного класса или функции с шаблонами не могут быть скомпилированы до тех пор, пока параметры не будут заданы, это верно. Т.е. невозможно получить объектный файл с кодом незаданных шаблонов. Компилятор этот код не обрабатывает. Соответственно, шаблонный код не может являться единицей компиляции в C++.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #8 : 18-02-2008 08:53 » 

Насколько я помню, при использовании шаблонов, разделить реализацию не получится при всем желании.

Заблуждаешься Улыбаюсь

Это делается легко и не принуждённо. Линковаться не будет, но все места использования нормально скопилируются.
Что бы еще и компилировалось, берёшь в CPP с реализацие добавляешь строчку явного инстанцирования для нужных параметров.
У подхода есть ряд плюсов о которых не сложно догадаться.
Записан

Странно всё это....
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines