Как правильно построить классы, которые ссылаются друг на друга? (C ++)

0

Я работаю над процедурной базой строителей уровня игры на рекурсивном конструкторе. Каждый новый объект Door вызывает конструктор для объекта Room за его пределами, который, в свою очередь, вызывает новые конструкторы дверей для своих стен до тех пор, пока не будет достигнут предел комнат. Для правильного обхода мне нужны мои комнаты, чтобы знать, что такое "Дверь" и "Мои двери", чтобы иметь указатели на Комнаты, в которые они идут/из, но компилятор, похоже, не нравится. Сначала у меня была #includes ромашка прикованная (>> означает #include здесь):

randDungeon.cpp >> door.cpp >> door.h >> room.cpp >> room.h >> Library.cpp >> Library.h

но я получаю сообщение об ошибке, когда пытаюсь скомпилировать сообщение с сообщением, что, по существу, room.cpp не знает, что такое объект Door. Если я обращу комнату и дверь в поток выше, я получаю обратную ошибку - мои комнаты знают, что у них есть, но двери больше не понимают Комнату.

Какая правильная организация классов, чтобы не-наследственные классы Door and Room могли разговаривать друг с другом?

  • 1
    Я надеюсь , что вы не #include ИНГ .cpp файлы ...
  • 0
    Мне никогда не говорили, и компилятор не жалуется. Могу я спросить, почему?
Показать ещё 3 комментария
Теги:
class
inheritance

1 ответ

3

Все #include - это копирование и вставка содержимого файла в базовый файл (randDungeon.cpp). Это делает ваши файлы.h в основном бесполезными и, как вы обнаружили, затрудняет использование классов

Что вам нужно сделать:

  • Остановить #include ing *.cpp файлы
  • #include соответствующие объявления (*.h) в необходимые файлы (файлы.cpp и.h) или использовать форвардные объявления классов (предпочтительно)
  • Посмотрите, как скомпилировать несколько файлов, поскольку в настоящее время вы, скорее всего, просто компилируете randDungeon.cpp

Ещё вопросы

Сообщество Overcoder
Наверх
Меню