Я работаю над игровым проектом, и у моего товарища по команде есть определенный способ решения наших эталонных вопросов, и он отлично работает, если только игра не будет большой, мы получим массивные конструкторы.Инициализация ссылок в конструкторе
class Player
{
private:
Weapon *w1, *w2, *w3;
Armor *a1, *a2;
public:
Player(Weapon *w1, Weapon *w2, ...) : w1(w1), w2(w2), ...;
}
Тогда мой конструктор is Player(w1, w2, w3, ...);
который вызывает беспокойство, что, если класс игрок имел 100 ссылок?
Есть ли способ сделать этот синтаксис более простым, или мы делаем это неправильно? Есть ли лучший способ сделать ссылки на переменные, которые находятся за пределами класса игрока?
ВАЖНО Вышеприведенное является просто примером, плохо написанным. У меня нет оружия и доспехов. У меня много уроков. У меня есть ссылка на консоль разработчика, у меня есть ссылки брони, элементы, у меня есть ссылки на класс отладки, класс журнала, и список продолжается. Мне не нужен вектор. Извините за плохой пример.
Если вам нужно передать десятки (или более) аргументов, то, скорее всего, вы делаете что-то неправильно. Пусть конструктор (ы) инициализирует переменные-члены для некоторого стандартного значения по умолчанию и просто изменит несколько, которые действительно нужно изменить. –
Что касается этого случая, считаете ли вы ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector) вместо дискретных переменных? Если вы используете наследование, то этого может быть достаточно, чтобы иметь единственный вектор для * все * оборудования, независимо от вида. –
И последний комментарий, и просто для nitpick, но на C++ вы не инициализируете ссылки, вы инициализируете * указатели *. Ссылки на C++ - это нечто другое. –