*仅供引用-我正在从事OOP入门项目。这似乎是一个基本问题,但我在任何地方都找不到清晰的解释。

我试图在调用作为其他对象的私有(private)数据成员的对象的成员函数时避免包装函数。下面,我简单地说明了我的意思。有一个顶级Game_Manager对象,其中包含2个Player对象,每个对象都包含一个Weapon对象。

Game_Manager知道玩家的武器应何时进攻。有什么方法可以避免Player中的包装器功能?这只是不好的设计吗?

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

最佳答案

也许

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

关于c++ - 如何避免C++中类中的类的包装函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19722429/

10-11 21:48