在一个学术项目中,我试图建立一个简单的物理引擎。 我正在使用Eigen库进行向量/矩阵计算。 我想保留尽可能独立,因为我可以从图书馆/设计选择,以缓解未来的变化,所以我使用typedefs为特征类型。特征类型typedef C4430失败
文件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,并试图利用这些类型定义:
#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++不支持default-int。
2)我在这里做错了什么?
在此先感谢。
我没有添加其余的错误,因为我的Visual Studio版本是意大利语,我认为C4430足以让您了解问题。对不起,让你烦恼,我现在正在编辑我的帖子与消息翻译。 – 2012-04-03 08:21:00
对不起,我没有发布所有包括。我现在做了。顺便说一句,所有工作正常,没有typedefs,使用特征类型。 – 2012-04-03 08:27:11
@AndreaCasaccia:编译器仍然应该给你发生错误的文件名和行号,你能不能在那个地方发布代码? – 2012-04-03 08:48:32