相关疑难解决方法(0)

面向对象的设计建议

这是我的代码:

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)

那么你觉得哪一个最好?

c++ oop visibility class-members

15
推荐指数
4
解决办法
652
查看次数

标签 统计

c++ ×1

class-members ×1

oop ×1

visibility ×1