Я работаю над процедурной базой строителей уровня игры на рекурсивном конструкторе. Каждый новый объект Door вызывает конструктор для объекта Room за его пределами, который, в свою очередь, вызывает новые конструкторы дверей для своих стен до тех пор, пока не будет достигнут предел комнат. Для правильного обхода мне нужны мои комнаты, чтобы знать, что такое "Дверь" и "Мои двери", чтобы иметь указатели на Комнаты, в которые они идут/из, но компилятор, похоже, не нравится. Сначала у меня была #includes ромашка прикованная (>> означает #include здесь):
randDungeon.cpp >> door.cpp >> door.h >> room.cpp >> room.h >> Library.cpp >> Library.h
но я получаю сообщение об ошибке, когда пытаюсь скомпилировать сообщение с сообщением, что, по существу, room.cpp не знает, что такое объект Door. Если я обращу комнату и дверь в поток выше, я получаю обратную ошибку - мои комнаты знают, что у них есть, но двери больше не понимают Комнату.
Какая правильная организация классов, чтобы не-наследственные классы Door and Room могли разговаривать друг с другом?
Все #include
- это копирование и вставка содержимого файла в базовый файл (randDungeon.cpp). Это делает ваши файлы.h в основном бесполезными и, как вы обнаружили, затрудняет использование классов
Что вам нужно сделать:
#include
ing *.cpp файлы#include
соответствующие объявления (*.h) в необходимые файлы (файлы.cpp и.h) или использовать форвардные объявления классов (предпочтительно)
#include
ИНГ .cpp файлы ...