![]() |
|
Модераторы: bsa |
![]()
|
|
| нуп |
|
|||
|
Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: нет Всего: 33 |
В проекте есть много классов, как правильно их подключать в файлы? В php все инклюды собирал в 1 файл и его подключал. Но в С++ ругается на такое. Можно ли как то это реализовать?
|
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 4 Всего: 64 |
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| нуп |
|
|||
|
Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: нет Всего: 33 |
|
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 4 Всего: 64 |
нуп, а ошибки то какие?
И сразу заметно следующее:
замкнутое кольцо. Добавлено через 1 минуту и 12 секунд Т.е. вы подключаете includes.h в TBaseClass.h А в includes.h происходит подключение TBaseClass.h и так далее. Добавлено через 1 минуту и 45 секунд includes.h лучше подключать к *.cpp файлам -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| нуп |
|
|||
|
Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: нет Всего: 33 |
не, не, не. цикла не будет в классах стоят иф дефы.
Ошибки такого плана "'TBaseClass::var' uses undefined class 'TSomeClass'" |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
нуп, на самом деле не стоит делать это. Ты должен подключить #include "TSomeClass.h" напрямую. А includes.h нужно подключать только в cpp
|
|||
|
||||
| artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 4 Всего: 64 |
Пишет что используется неизвестный класс TSomeClass.
Пока ничего сказать не могу. Мало инфы и хрустальный шар барахлит что-то Добавлено через 1 минуту и 24 секунды соглашусь с тобой. Но странно почему он так себя ведёт. ИМХО ТС что-то не договаривает. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
| нуп |
|
|||
|
Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: нет Всего: 33 |
Не знаю как правильно подключать
|
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
нуп, в хидерах нужно подключать только то, что действительно необходимо. Потому что чем больше файлов подключено, тем дольше компилируется. Например, если у тебя в хидере используется только указатель или ссылка на объект какого-то типа, то достаточно использовать предопределение (class MyClass;). Например, у тебя в приватной области класса есть указатели на объекты типа MyClass. В реализации этого класса ты должен подключить хидер где определяется MyClass, а вот в остальных файлах, в которых используется твой класс, совсем не обязательно знать, что такое MyClass и как он устроен. Поэтому в этом случае достаточно его предопределения.
Еще существует шаблон проектирования PIMPL (Pointer to IMPLementation), он хорошо это иллюстрирует: MyClass.h
Это сообщение отредактировал(а) bsa - 12.2.2010, 11:33 |
||||
|
|||||
| нуп |
|
|||
|
Ботокодер ![]() ![]() Профиль Группа: Участник Сообщений: 987 Регистрация: 22.6.2009 Где: Кременчуг Репутация: нет Всего: 33 |
Спасибо за ответы
|
|||
|
||||
| GavriKos |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 220 Регистрация: 8.8.2007 Где: Донецк, Украина Репутация: 1 Всего: 1 |
А еще есть хорошая штука - ООП. По которой скидывать все инклуды в один файл,а потом его инклудить будет нарушением. Если правильно спланировать иерархию и прочее, то проблемы с инклудами (и, кстати большие инклуды порой тоже) пропадут.
--------------------
Донецкая группа IT - присоединяемся |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |