Вот мой код:
class Soldier {
public:
Soldier(const string &name, const Gun &gun);
string getName();
private:
Gun gun;
string name;
};
class Gun {
public:
void fire();
void load(int bullets);
int getBullets();
private:
int bullets;
}
Мне нужно вызвать все функции-члены Gun над объектом Soldier. Что-то вроде:
soldier.gun.fire();
или
soldier.getGun().load(15);
Итак, какой из них лучше? Скрытие объекта оружия как частного члена и доступ к нему с помощью функции getGun(). Или сделать его публичным участником? Или я могу инкапсулировать все эти функции, чтобы сделать реализацию сложнее:
soldier.loadGun(15); // calls Gun.load()
soldier.fire(); // calls Gun.fire()
Итак, какой из них вы считаете лучшим?