在一個學術項目中,我試圖建立一個簡單的物理引擎。 我正在使用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