2011-04-05 64 views
4

介紹重新啓動遊戲和再次對象

我用C創建一個小遊戲++,想創建一個函數來重新啓動遊戲。

首先我創建對象player。然後我有一個if語句來確定何時按某個鍵來調用New()方法。

我的目標

在該方法中,我想重新實例播放器類的對象,所以所有的變量將被重置了。

我的代碼:

Player player; 

//New game method 
Game::New() 
{ 
    player = new Player(); 
} 

//Game loop 
Game::Loop() 
{ 
    if(keyispressed(key)) 
    { 
     Game.New(); 
    } 
} 

有什麼建議?

回答

4

您正混淆指針和非指針變量。 new Player()返回動態分配的Player對象的地址。您不能將此地址分配給非指針變量player;你需要聲明player爲指針:

Player* player = new Player(); 

您還需要記住釋放先前與匹配delete分配的內存:

// player starts out pointing to nothing 
Player* player = 0; 

//New game method 
Game::New() 
{ 
    // If player already points to something, release that memory 
    if (player) 
     delete player; 

    player = new Player(); 
} 

現在player是一個指針,你會必須更新您使用播放器編寫的其他代碼,以便使用->member access operator。例如,player.name()將變爲player->name()

+0

謝謝!這正是我需要的:-)太糟糕了,我不能給兩個upvotes .. – Datoxalas 2011-04-05 14:19:16