這非常奇怪,我無法理解它是什麼導致它發生的......因此,我有兩個類:Player and Enemy和一個實用程序static類CollisionMgr。錯誤2061 - 當我包含標題時,類變成「未定義」
我有一個世界級的敵人數組,我想在Player類中有一個指向它的指針來進行碰撞檢測。但此刻我嘗試#包括在玩家一個敵對階級,我得到敵人一個「玩家未定義」錯誤....我認爲它與頭部包裹做...
#pragma once
#include <string>
#include <vector>
#include "mathlib.h"
#include "md2model.h"
#include "Object3DS.h"
const float PLAYER_FORWARD_SPEED = 60.0f;
const float PLAYER_HEADING_SPEED = 60.0f;
class Player : public GameObject
{
public:
Player(float r);
~Player();
void loadModel(const char *filename);
void drawModel();
void drawBoundingWireframe();
void passVisibleObjects(vector<Object3DS*> &vo);
private:
Entity3D entity;
MD2Model* player;
float modelRot;
float modelPitch;
Vector3 scale;
Vector3 pos;
Vector3 rot;
float forwardSpeed;
float heading;
float radius;
vector<Object3DS*> visibleObjects;
};
這是敵對階級
#pragma once
#include <string>
#include <vector>
#include "Player.h"
#include "mathlib.h"
#include "md2model.h"
const float ENEMY_FORWARD_SPEED = 60.0f;
const float ENEMY_HEADING_SPEED = 60.0f;
class Enemy : public GameObject
{
public:
Enemy(Player* p, float r);
~Enemy();
void loadModel(const char *filename);
void drawModel();
void drawBoundingWireframe();
bool checkCollision();
void setPosition(Vector3 pos);
void setRotation(Vector3 r);
void setScale(Vector3 r);
void setSpeed(float s);
void setHeading(float h);
float getForwardSpeed();
float getHeading();
void rotateModel(float dx, float dy);
void resetRotation();
void setAnimation(char *filename);
Vector3 getPosition();
void moveEnemy(float elapsedTimeSec);
Entity3D entity;
void passVisibleObjects(vector<Object3DS*> &vo);
private:
MD2Model* enemy;
Player* player;
float modelRot;
float modelPitch;
Vector3 scale;
Vector3 pos;
Vector3 rot;
float forwardSpeed;
float heading;
float radius;
vector<Object3DS*> visibleObjects;
};
在源文件包括我的一些碰撞功能此靜態類:
#pragma once
#include <vector>
#include "mathlib.h"
#include "Object3DS.h"
#include "Enemy.h"
class CollisionMgr{
public:
static vector<Object3DS*> findVisibleObjects(BoundingBox &viewingVolume, vector<Object3DS> &gameObjects, vector<Object3DS*> &visibleObjects);
static vector<Enemy*> findVisibleEnemies(BoundingBox &viewingVolume, vector<Enemy> &enemies, vector<Enemy*> &visibleEnemies);
static bool checkCollision(const Vector3 pos, const Vector3 forward, float radius, const vector<Object3DS*> &vo);
static double intersectRaySphere(Vector3 rO, Vector3 rV, Vector3 sO, double sR);
};
所有這些編譯好的這樣,但現在我嘗試添加#包括「敵人「在播放器中我得到錯誤C2061:語法錯誤:標識符'玩家'在敵人類....或如果我包括成功敵人,然後嘗試包括CollisionMgr ....他們之間存在某種衝突和定義的球員,但我無法理解如何解決它....
我使用VS2010作爲我的編譯器..
任何幫助,將不勝感激!
我試着重新安排包含聲明,但我真的不明白是什麼原因造成的?
這確實解決了這個問題。非常感謝你 – Alex