| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Взаимозависимые заголовочные файлы |
| Автор: Cheese 28.7.2012, 22:55 |
| Здрасьте, такой дурацкий вопрос: как спроектировать программу, если по смыслу класс, описанный в заголовочном файле A.hpp требует класса, описанного в файле B.hpp, а класс, описанный в B.hpp требует класса из A.hpp? Гугл ответа не дал. |
| Автор: boostcoder 28.7.2012, 23:07 |
| общее вынести в отдельный класс(возможно абстрактный), и подключать его в A и B. |
| Автор: borisbn 28.7.2012, 23:55 | ||
или в h-никах предобъявить классы
плохо искал - http://stackoverflow.com/questions/346058/c-class-header-files-organization |
| Автор: Cheese 30.7.2012, 12:30 |
| Ещё какие-нибудь варианты есть? Потому что общего в файлах нет, абстрактный класс не вариант, а предопределения классов дают ошибки. |
| Автор: borisbn 30.7.2012, 12:34 |
если всё правильно сделал ошибок быть не должно. показывай, что сделал и какие ошибки |
| Автор: boostcoder 30.7.2012, 13:29 | ||
я об этом и написал. но кому-то логичнее лечить последствия ;) |
| Автор: disputant 30.7.2012, 16:20 |
| Хочется верить, что в одном классе успользуются только указатели на другой, потому что если каждому надо знать о внутренностях другого - то 100% надо переделывать проект... |
| Автор: Cheese 31.7.2012, 15:40 |
| Содержание примерно следующее: есть класс "объект", который, понятно, описывает объекты, типа камней, деревьев и монстров. Есть класс "событие", который содержит некоторое действие и объект, его совершивший. Теперь я хочу добавить объектам память, то есть список событий, который они видели, потому и получаются взаимозависимости такие. |
| Автор: korian 31.7.2012, 17:08 | ||
Не компилил, но идея должна быть понятна
|
| Автор: Cheese 2.8.2012, 10:23 | ||
Следующий код не работает, выдаёт ошибку "invalid use of incomplete type"
|
| Автор: korian 2.8.2012, 11:20 |
| в /* brain.cpp */ добавте #include <object.hpp> короче в хидерах - только declarations, а в cpp файлых, уже все должно быть известно, поэтому там инклуды. |
| Автор: Cheese 2.8.2012, 12:20 | ||
Спасибо большое, помогло |
| Автор: mes 3.8.2012, 22:33 |
Дежавю .. и вроде в тех же лицах.. Добавлено через 3 минуты и 53 секунды точно : http://forum.vingrad.ru/forum/topic-341740/unread-1/hl/%25D0%25B2%25D0%25AB%25D0%25BD%25D0%25B5%25D1%2581%25D1%2582%25D0%25B8+%25D0%25B2+%25D0%25BE%25D1%2582%25D0%25B4%25D0%25B5%25D0%25BB%25D1%258C%25D0%25BD%25D0%25AB%25D0%25B9+%25D0%25BA%25D0%25BB%25D0%25B0%25D1%2581%25D1%2581/index.html повторяется.. даже не смотря на |