Это хороший выбор дизайна или я неправильно понимаю, что сказал нам мой учитель?
Это может быть плохой выбор дизайна, поскольку вы скрываете тот факт, что вы используете собственные типы,тем не менее вам нужно знать этот факт, чтобы использовать ваши typedefs.
Я получаю много ошибок C4430.
Подобные описания действительно раздражают меня.Ваш компилятор не просто умрет с «ошибкой C4430», он даст вам подробную информацию об ошибке, которая имеет решающее значение для поиска причины проблемы.Вы делаете все возможное, чтобы никто не помог вам, не передавая эту информацию.Не могли бы вы опубликовать сообщение first complete вместе со строкой кода, которая вызывает ошибку?
Количество ошибок не имеет значения, поскольку вероятно, что большинство ошибок происходит изта же проблема.
Так как Microsoft предупреждение C4430 читает «отсутствует указатель типа - предполагается, что int», я подозреваю, что вы забыли включить заголовочные файлы Eigen, так что компилятор не знает, чтоEigen::Vector2f
is.
Попробуйте добавить #include <Eigen/Core>
к PhysicsEngine.h
.
Из вашего обновленного кода: у вас есть циклические зависимости.PhysicsEngine.h
включает RigidBody.h
и наоборот.Это нехорошо.
Я подозреваю, что при компиляции RigidBody.cpp
компилятор завершит синтаксический анализ определения класса в RigidBody.h
перед typedefs в PhysicsEngine.h
, так что ваши пользовательские typedefs не доступны вэтот момент.
Вы, вероятно, должны удалить RigidBody.h
include из PhysicsEngine.h
или переместить ваши typedefs в отдельный заголовочный файл.