C ++: передать объект в качестве аргумента - PullRequest
0 голосов
/ 07 мая 2018

Мне просто интересно, почему этот код не компилируется:

#include <iostream>

class Player
{
    public:
        Player()
        {

        }
};

class Game
{
    public:
        Game()
        {

        }

        void getPlayer(Player &player)
        {

        }
};

int main()
{
    Game *game = new Game();
    Player *player = new Player();

    game->getPlayer(&player);

    return 0;
}

Я хотел бы передать объект игрока в качестве аргумента методу getPlayer () класса Game.

Привет

1 Ответ

0 голосов
/ 07 мая 2018

Ваш метод:

void getPlayer(Player &player)

принимает ссылку lvalue на объект типа Player, но вы пытаетесь передать ему Player **, чтобы исправить ошибку компиляции, просто разыменовав указатель:

game->getPlayer(*player);

но дизайн вашей программы выглядит неправильно (передача ссылки на метод, который вызвал getPlayer и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...