не можете сохранить объект в массиве?C ++ - PullRequest
0 голосов
/ 17 мая 2011

Я пытаюсь сделать что-то простое и сохранить объект в массиве в C ++, но все время говорится, что я не могу использовать оператор = с правым операндом моего класса. Вот код:

class Player {
    string name;
    double points;
    bool wonLastRound;
public:
    Player() {}
    Player(string n)
    {
        name = n;
    }
    const Player &operator=(const Player &);
    void addPoints(double p)
    {
        points += p;
    }
};

и вот код для создания экземпляра

void initPlayers()
{
    for(int i = 0; i < 4; i++)
        players[i] = new Player("Player " + i);
}

любая помощь будет оценена, мне действительно нужно закончить этот проект в ближайшее время!

1 Ответ

0 голосов
/ 17 мая 2011

Должно быть,

Player& operator = (const Player &);  // remove "const" (it's not mandatory though)

Фактическая проблема заключается в присваивании внутри for цикла.Вам не нужно new объекты, так как вы храните значение, а не указатель.Использование:

players[i] = Player("Player " + i);  // no need to do "new"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...