Вы путаете переменные указателя и не указателя. 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
является указателем, вам придется обновить любой другой написанный вами код, использующий плеер, чтобы использовать ->
оператор доступа к элементу . Например, player.name()
станет player->name()