Я пытаюсь сделать модель с костями.Он загружает файл .obj для создания сетки и использует группы граней для определения каждой "кости" или части модели.
У меня есть класс Model.В заголовочном файле я определил открытую структуру Vertex, в которой хранятся такие данные, как положение и нормальное направление для каждой вершины в модели.
У меня также есть класс Bone, в котором есть вектор (#include) указателей на структуру Vertex, которая выглядит следующим образом:
std::vector< Model::Vertex* > vertices;
В классе Model будут содержаться кости, поэтому в заголовке у меня есть #included Bone. Аналогично, Boneкласс должен знать, что такое Vertex, поэтому у меня в заголовке #included Model.
Это дает ошибку переопределения типа для Bone, поэтому я поставил #pragma один раз в верхней части заголовка Bone, но теперь моя проблема заключается в том, чтопри этом я получаю четыре ошибки компиляции, относящиеся к строке кода, показанной выше.
Первые два: ошибка C2653: «Модель»: это не имя класса или пространства имен
Вторые два: ошибка C2065: «Вершина»: необъявленный идентификатор
Однако я уверен, что в этой строке кода нет ничего синтаксически неправильного.И если я не включу Bone в класс Model, он прекрасно работает.
Кто-нибудь знает, как решить проблему такого типа?И / или есть ли лучший способ сделать это?
РЕДАКТИРОВАТЬ: я поместил class Bone;
в заголовок Model для прямого декларирования, но в частном разделе: заголовка Model, у меня есть Bone forearm;
который выдает ошибку, что предплечье использует неопределенный класс 'Bone'.
Я не уверен, смогу ли я изменить порядок классов, таких как: http://www.parashift.com/c%2B%2B-faq-lite/misc-technical-issues.html#faq-39.14,, потому что Bone хочет указатель на Model:: Вершина, а не сама модель.