![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| TGrey |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Добрый день, подскажите, как правильно подключать хедеры если имеются, несколько классов, которые использую друг друга.
А именно(все классы в разных файлах)
В основ ошибка была в конструктора класса 3, пишет, что объект не определен. Попробовал подключить Хедер с этим классом, и началось... ошибка на ошибке, то множественное определение, то еще что. Как корректно это все подключить надо? По совету прописал в каждом хедере
Все равно жалуется В таком случае жалуется на член-класса
Что с ним делать? |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
гугль : forward declaration
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
TGrey
Используй foward declaration. допустим это файл class1.h
и включаешь class2.h и class3.h в файле class1.cpp Добавлено через 36 секунд опоздал |
|||
|
||||
| TGrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Так у меня нет пока цппшников) Только хедеры, а функции определены внутри класса.
Вот у меня такой код
Выдает мне ошибку что функция Гет не является членом Class1 потому, что тип еще не определен. Или я так понимаю обязательно надо выносить реализацию в ЦППшники? Это сообщение отредактировал(а) TGrey - 28.11.2010, 18:10 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| TGrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Ну так а в чем же тогда дело? Код такой как я написал, все включено, почему оно рассказывает, что нет такой функции и тип не объявлен?
Можно же вызывать методы этого класса который перед основным написан? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
хидеры не могут включать друг друга циклически и поэтому один из классов получается не определенным на момент использования..
чтоб понять раскройте в один файл все инклуды и увидете что получится.. либо повторное определение, если нет стражей иначе отсутствие определения.. эта тема обсуждалась не одну сотню раз, поэтому прежде всего: |
|||
|
||||
| TGrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Гуглил у них как-то все просто получается, а я как не пишу, постоянно новая ошибка.
Прикрепил архив с проектом. Посмотрите пожалуйста, что нужно, чтобы они заработали. В Unit4.cpp подключены 3 хедера. Но между собой оно конфликтуют. Присоединённый файл ( Кол-во скачиваний: 4 )
qwe.rar 654,59 Kb |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
приведите к этой схеме :
http://www.adp-gmbh.ch/cpp/forward_decl.html
да, если иначе хидеры получаются циклически зависимыми..
объявления класса не достаточно для использования его содержимого, так как оно еще не определено.. Добавлено через 1 минуту и 32 секунды вот еще куча тем http://forum.vingrad.ru/act-Search/CODE/sh...ward/index.html Добавлено через 2 минуты и 38 секунд и в первой же есть ответы на все ваши вопросы : http://forum.vingrad.ru/forum/topic-144392...forward/15.html |
||||
|
|||||
| TGrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Блин ну я не знаю, видимо я не пойму, что от меня требуется. Уже все сделал, как в примерах, все реализации повыносил в ЦППшник, перед классом профорвардил другой класс.
Теперь жалуется
Пишет что Player, должен быть заранее объявленным классом или структурой, и ругает все обращения к полям этого класса, говорит, что он еще не определен. Я вообще не понимаю, что оно хочет. Пожалуйста могли бы вы на моем примере вложенного проекта указать, как необходимо сделать, а я сяду разберу его. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| TGrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Ну я уже не знаю, я никак не пойму, что ему еще надо. Прочитал, ничего нового не увидел.
Хорошо это действительно забавно, потому что я создал проект в Визуале, создал туже иерархию классов, подключил все, как и в Билдере, но разница лишь в том, что в Студии это все работает. Как это можно объяснить? Это сообщение отредактировал(а) TGrey - 28.11.2010, 21:25 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
скорей всего Вы не понимаете разницу между объявлением, и определением..
использовать методы можно только после определения.. и определять указатель/ссылку можно по объявлению..
заранее определенным.. |
|||
|
||||
| TGrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Хорошо это действительно забавно, потому что я создал проект в Визуале, создал туже иерархию классов, подключил все, как и в Билдере, но разница лишь в том, что в Студии это все работает.
Как это можно объяснить? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |