2011-04-05 67 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