这是我的代码:
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;
}
Run Code Online (Sandbox Code Playgroud)
我需要调用Gun的所有成员函数而不是Soldier对象.就像是:
soldier.gun.fire();
Run Code Online (Sandbox Code Playgroud)
要么
soldier.getGun().load(15);
Run Code Online (Sandbox Code Playgroud)
那么哪一个是更好的设计?将枪对象隐藏为私有成员并使用getGun()函数访问它.或者让它成为公共会员?或者我可以封装所有这些函数会使实现更难:
soldier.loadGun(15); // calls Gun.load()
soldier.fire(); // calls Gun.fire()
Run Code Online (Sandbox Code Playgroud)
那么你觉得哪一个最好?