C++ 子类无法访问其他子类向量



在这里不知所措,希望有人能提供帮助。

我有以下类结构。

一个基类房间,有两个子类KitchenlivingRoom

我的基类中有一个向量

Room::Room()
{
    up = nullptr;
    down = nullptr;
    left = nullptr;
    right = nullptr;
    pocket = new vector<string>; 
}

定义为:

void Room::addPocket(string item)
{
    char emptyPocket;
    if (pocket->size()==1)
    {
        emptyPocket = 'N';
    }
    if(pocket->size()<1)
        {
            pocket->push_back(item);
            cout << "Item added to pocket" << endl;
        }
    else
        {
        cout <<"Your pocket is full" << endl;
        cout <<"Would you like to empty your pocket? 'Y' or 'N'" << endl;
        cin >> emptyPocket;
        if(emptyPocket == 'Y' || emptyPocket == 'y')
        {
            pocket->clear();
            cout <<"You have emptied your pocket." << endl;
        }
    }
}

我的程序功能如下。我还有一个类Game,其中发生以下情况。我进入childKitchen并添加到向量中。回到Game课堂。我进入livingRoom类,当我访问向量时,是空的吗?我在这里错过了什么?

类数据不会在子类的不同实例之间共享。每个子类都是基类的不同实例,并且实际上包含基类的一个不同实例。

所以KitchenpocketlivingRoom有另一个pocket.添加到Kitchen pocket的东西不会添加到LivingRoom的口袋里。

相反,您应该考虑制作另一个类来表示在房间之间移动的实体,并让此实体类包含pocket 。无论实体在哪个房间,它始终具有相同的pocket

也回避动态分配std::vector。它们旨在消除管理动态分配的所有责任,因此动态分配vector只会使其中一些管理职责重新发挥作用,没有任何好处。

相关内容

最新更新