在一个学术项目中,我正在尝试设置一个简单的物理引擎。我正在使用 Eigen 库进行向量/矩阵计算。我想尽可能地独立于我正在做的库/设计选择,以简化未来的变化,所以我将 typedefs 用于 Eigen 类型。
文件 PhysicsEngine.h
#pragma once
#include <Eigen/Core>
#include <Eigen/Geometry>
#include "RigidBody.h"
... other inclusions ...
namespace PhysicsEngine
{
typedef float real;
typedef Eigen::Vector3f vector3;
typedef Eigen::Quaternionf quaternion;
typedef Eigen::Matrix4f matrix4;
typedef Eigen::Matrix3f matrix3;
...
1)这是一个好的设计选择还是我误解了老师告诉我们的内容?
包括上面的文件,在 RigidBody.h 中,并尝试使用这些 typedef:
#pragma once
#include "PhysicsEngine.h"
namespace PhysicsEngine
{
class RigidBody
{
public:
vector3 position; // <- error C4430
real inverseMass; // <- error C4430
vector3 velocity; // <- error C4430
vector3 netForce; // <- error C4430
quaternion orientation; // <- error C4430
matrix3 inverseInertiaTensor; // <- error C4430
vector3 rotation; // <- error C4430
vector3 netTorque; // <- error C4430
matrix4 transformationMatrix; // <- error C4430
...
我得到:
错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数。
2)我在这里做错了什么?
提前致谢。