首页 > 解决方案 > 如何创建函数来操作具有受保护或私有属性的对象内部的对象?

问题描述

我正在尝试了解类/继承(一般而言),因此我正在尝试将游戏制作为学期的期末项目。

假设我有一个SOLDIER类,其对象是类INVENTORY,对象是类POTION(具有大小和数量)。

如果我想创建一个函数 use_potion(),我该怎么做?我可以公开所有内容以制作类似“soldier1.addlife(soldier1->inventory1->potion1->size) 的内容,但这看起来是一种糟糕的做法。我如何使用私有/受保护的属性来实现它?

*药水只是我需要用相同结构制作的功能中的一种——object->object->object->something——,所以我真的需要一些帮助和示例来了解如何制作它们。

标签: c++

解决方案


您需要在您的 SOLDIER 类中添加一个公共函数,该函数调用 INVENTORY 对象中的公共函数,该对象调用 POTION obj 中的公共函数。

这是您的程序的示例结构:

class SOLDIER 
{
private:
    class INVENTORY 
    {
    private:
        class POTION 
        {
            int size = 5;
        public:
            void use_potion()
            {
                size++;
                printf("use_potion in POTION obj");
            }
        };
        POTION pot;
    public:
        void use_potion()
        {
            pot.use_potion();
        }
    };
    INVENTORY inv;
public:
    void use_potion()
    {
        inv.use_potion();
    }
};

int main()
{
    SOLDIER s;
    s.use_potion();

    return 0;
}

推荐阅读