Я почти закончил писать первый черновик логического движка моей игры, который основан на сущностях / компонентах.Это не совсем основано на этой философии, но я также думаю, что способ реализации отличается от человека к человеку.Я пишу на C ++, используя ООП, STL и виртуальные функции.Да, я знаю, что виртуальные функции могут быть медленными, но это не упражнение для выполнения чего-то очень быстрого, просто логический движок, который может быть легко расширен и понятен другим (все также комментируется).Это всего лишь упражнение в «разработке программного обеспечения» новичка в разработке игр, если вы хотите так его назвать.
Мой первый черновик почти завершен, основные сервисы (различные inits, directX и т. Д.)отделены от игровой логики и готовы к использованию.Я просто пытаюсь закончить логический движок, прежде чем смогу создать свой первый прототип игры (я думаю об изометрической ARPG).Движок GL построен как дерево классов, начиная с базового абстрактного класса «Entity» и выводя из него все более и более конкретные классы.По причинам хорошего дизайна нигде не более 3 или 4 уровней наследования. Я думаю.
Но у меня может быть серьезная проблема: в некоторых классах, в которых я объявляю переменные-члены объектами другого класса,это происходит: после того, как IDE запускает и анализирует то, что я написал, он подчеркивает тип этой конкретной переменной-члена (имя класса) и говорит, что она нигде не объявлена.Затем, через долю секунды, красное подчеркивание исчезает, и оно говорит, что все в порядке и объявляется (oO), ЭТО СЛУЧАЕТСЯ СНОВА И СНОВА каждый раз, когда анализирует код.Это происходит также в другом классе с другим типом класса.Просто чтобы прояснить, я включил все соответствующие заголовки, и он ДОЛЖЕН знать об объявлении типа и где это делается.
Кроме того, если я пытаюсь скомпилировать, это дает мне gl_nonrenderableentity.h(21): error C2143: syntax error : missing ';' before '*'
и gl_nonrenderableentity.h(21): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
в парах для каждой ошибочной переменной.
Я знаю, что причина этого не в том, чтобы найти его тип где-либо (что странно, IDE находит, почти через секунду после каждого анализа).Иногда эти ошибки дублируются в выходных данных компилятора, и после небольшой настройки того, как заголовки включены, я получаю только одну копию на переменную (и это по-прежнему не имеет смысла, я использую include guard ... не VS2010 Express понимает прагмы?)
Я думаю, что это может быть проблема с заголовком, но самое интересное для меня: почему, черт возьми, среда IDE подчеркивает тип переменной красным, говоря, что не может ее найти, ичерез секунду или две он находит это, больше никаких проблем, но когда я компилирую весь проект, он выдает мне ранее упомянутые ошибки выше.
Каждый раз, когда у меня возникала проблема, я исследовал и обнаруживал исправление в своемсобственные, даже проблемы с IDE (знаменитая ошибка msbuild).Но я просто не могу понять это, и мне нужна помощь ветеранов.Кто-нибудь знает, почему IDE так реагирует?Исчезающее красное подчеркивание после каждого анализа IDE должно что-то значить.Я знаю, что это происходит с новыми переменными, когда вы пишете, пока IDE не найдет их объявления, но это только один раз, и тогда это нормально, несмотря ни на что .. с этими двумя конкретными классами, это всегда делает снова и снова это (и это единственныевозникла эта проблема).Другие переменные-члены из других классов не имеют этой проблемы.
Спасибо.Извините за длинный пост, но я старался изо всех сил объясниться.Если кому-то нужна дополнительная информация, пожалуйста ..
решено
Это была проблема с циклической ссылкой, просто используйте предварительную декларацию, и все в порядке.