Objektorientierter Designvorschlag

Hier ist mein Code:

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;
}

Ich muss alle Member-Funktionen von Gun über ein Soldier-Objekt aufrufen. So etwas wie

soldier.gun.fire();

ode

soldier.getGun().load(15);

Also welches ist ein besseres Design? Versteckt das Waffenobjekt als privates Mitglied und greift mit der Funktion getGun () darauf zu. Oder es zu einem öffentlichen Mitglied machen? Oder ich kann alle diese Funktionen kapseln, würde die Implementierung erschweren:

soldier.loadGun(15); // calls Gun.load()
soldier.fire(); // calls Gun.fire()

So welches denkst du ist das beste?

Antworten auf die Frage(9)

Ihre Antwort auf die Frage