У меня есть вектор, называемый игроками и класс под названием Player. И то, что я пытаюсь сделать, это написать:Инициализация объектов на лету
players.push_back(Player(name, Weapon(bullets)));
Так что я хочу иметь возможность создавать игроков в цикле. Но я вижу сообщение об ошибке не говорит «нет подходящей функции для вызова игрока :: ...»
Тогда я изменил, что:
Weapon w(bullets);
Player p(name, w);
players.push_back(p);
Вот мое определение игрока:
class Player {
public:
Player(string &name, Weapon &weapon);
private
string name;
Weapon weapon;
}
Я просто пытаюсь узнать, в чем разница между этими определениями. И это правильный способ передать объект конструктору объекта.
Примечание: Это не мои фактические определения классов. Я просто пытаюсь узнать что-то о объектно-ориентированном программировании на C++ с его кодированием. Я имею в виду, я знаю, что оружие может быть инициализирован в плеер :)
Имя должно также быть константным (она копируется и не изменяется внутри конструктора) –
@David Вы абсолютно правы. –
@Andreas: Кстати, есть ли разница между этими двумя кодами выше? Я говорю о производительности. Оба они создают локальную переменную и проходят вправо? – pocoa