*仅供参考 - 我正在开展一个介绍性的OOP项目。这似乎是一个基本问题,但我无法在任何地方找到明确的解释。
我在调用作为其他对象的私有数据成员的对象的成员函数时,试图避免包装函数。下面我创建了一个简单的说明我的意思。有一个顶级的Game_Manager对象,其中包含2个Player对象,每个对象都包含一个Weapon对象。
Game_Manager知道玩家的武器何时应该攻击。有没有办法避免播放器中的包装器功能?这只是糟糕的设计吗?
class Weapon
{
public:
void attack();
};
class Player
{
public:
void attack()
{
weapon.attack();
}
private:
Weapon weapon;
};
class Game_Manager
{
public:
time_for_first_player_to_attack()
{
player_1.attack();
}
private:
Player player_1;
Player player_2;
};
答案 0 :(得分:1)
也许
class Player
{
public:
Weapon getWeapon() { return weapon; } const;
private:
Weapon weapon;
};
class Game_Manager
{
public:
time_for_first_player_to_attack()
{
player_1.getWeapon().attack();
}
private:
Player player_1;
Player player_2;
};