我有三個班級,我嘗試將我的班級連接在一起。我試圖讓玩家1在特定類型的Tile上進行步驟,那麼Player1的重力變量「AccelY」將會改變,從而提供電梯的效果並垂直提升玩家。初始化類創建對象Player1。 (只有一個玩家可以應用於整個課程)這包括CEntity.h和CPlayer.h的頭文件,通過主控制器類CApp.h。 CPlayer類是CEntity的子類。 Accel Y在CEntity中被公開爲一個沒有初始值的浮點數。當玩家使用該類型的拼貼時,我想在CPlayer中更改它。我已經在Tile.h文件中放置了一個if語句子句,但是我無法使用以下代碼訪問和更新該值?我最初嘗試使用默認的類構造函數,但已嘗試使用如下函數。從另一個班級訪問和更改班級成員功能
CTILE.CPP
#include "CTile.h"
#include "CPlayer.h"
CTile::CTile(){
TileID = 0;
TypeID = TILE_TYPE_NONE;
if(TypeID == TILE_TYPE_LIFT){
CPlayer::LiftTile(0.75f, 10.0f);
//CPlayer::AccelY = 0.75f;
//CPlayer.SpeedY = 2.0;
}
}
CPLAYER.H
public:
CPlayer();
void LiftTile(float x, float y);
CPLAYER.CPP
void CPlayer::LiftTile(float x, float y){
SpeedY = x;
AccelY = y;
}
我不能在Entity.h static中創建原始變量聲明,因爲它們是在Entity.cpp中爲跳轉函數操縱的。我已經改變了上面的CTile.cpp,儘管它不喜歡剩下的代碼'code'static void LiftTile(float x,float y); CPlayer.h中的'code'聲明或實現'code'void CPlayer :: LiftTile(float x,float y){ \t \t SpeedY = x; \t AccelY = y; }類中的'代碼' – 2011-05-06 15:57:58
@Mr M:那麼你將不得不在CTile :: CTile()內部創建一個'CPlayer'對象,或者你可以將'Cileyer'對象作爲'CTile'類的成員然後在'CTile()'構造函數中,你可以使用該對象來調用'LiftTile()' – 2011-05-06 16:09:29
我相信問題不在CTile類中,而是在CPlayer類中。 「AccelY」在CEntity.h的默認構造函數中聲明爲公共浮動。 CPlayer是一個CEntity的子類。因此它只識別CPlayer(CPlayer :: CPlayer)的默認構造函數中的AccelY。 LiftTile是僅在CPlayer類中的附加功能。總而言之,問題是我需要在CPlayer的默認構造函數中複製LiftTile的行爲,但只有當它滿足CTile的if子句時並不是所有的時候。 – 2011-05-06 16:42:02