基類有不完整的類型基類具有不完整的類型錯誤
究竟是什麼這個錯誤意思,我該如何解決?我曾嘗試在我的EntityPhysics標題中通過執行class Entity
來宣告該類,但它不起作用。
這裏是我的Entity.h
#ifndef __Game__Entity__
#define __Game__Entity__
#include <iostream>
#include <string>
#include "OGRE/Ogre.h"
#include "OgreInit.h"
class Entity{
public:
Entity(std::string entityId, std::string mesh, Ogre::Vector3 position = Ogre::Vector3::ZERO, Ogre::Vector3 rotation = Ogre::Vector3::ZERO);
virtual ~Entity() = 0;
void setPosition(Ogre::Vector3 position);
Ogre::Vector3 getPosition();
void setRotation(Ogre::Vector3 rotationIncrease);
Ogre::Vector3 getRotation();
void setMesh(std::string meshName);
std::string getMesh();
virtual void tick() = 0;
void removeEntity();
Ogre::Entity getEntity();
Ogre::SceneNode getSceneNode();
std::string entityId;
protected:
Ogre::Entity *ent;
Ogre::SceneNode *nod;
};
#endif /* defined(__Game__Entity__) */
而且我EntityPhysics.h
#ifndef __Game__EntityPhysics__
#define __Game__EntityPhysics__
#include <iostream>
#include <string>
#include "OGRE/Ogre.h"
#include "OgreBulletCollisionsBoxShape.h"
#include "OgreBulletDynamicsRigidBody.h"
#include "Entity.h"
#include "OgreInit.h"
class EntityPhysics: public Entity //error occurs here: "Base class has incomplete type"
{
public:
EntityPhysics(std::string pentityId, std::string mesh, Ogre::Vector3 position, Ogre::Vector3 rotation, /*Physics Specific "stuff"*/std::string shapeForm = "BoxShape", float friction = 1.0, float restitution = 0.0, float mass = 1.0);
virtual ~EntityPhysics() = 0;
virtual void tick() = 0;
private:
float friction, restitution, mass;
OgreBulletCollisions::CollisionShape *collisionShape;
OgreBulletDynamics::RigidBody *rigidBody;
};
#endif /* defined(__Game__EntityPhysics__) */
我想這可能跟我有包括Entity.h
在子類的事,但如果我這樣做我犯了同樣的錯誤。
不能向前聲明一個類,然後使用,比如說,繼承前向聲明。你可以用一個前向聲明類型來做的事情是聲明一個指向或指向這個類型的指針。也不是說這兩個類都包含純虛函數,因此您不能直接創建實例。 –
另外,您不應在標識符中使用雙下劃線。以雙下劃線開頭的標識符被保留供編譯器使用。 –
@EdS。,* *含有雙下劃線的標識符被保留([參考](http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-ac-標識符))。在我因爲某種原因收到這條消息之前,我花了很多時間閱讀了它。另外,使用下劃線啓動全局範圍標識符會將其放在同一條船上。 – chris