C++ 子类不能访问其他子类 vector

标签 c++ class vector

在这里不知所措希望有人能帮助..

我有以下类结构。

一个基类 Room,有两个子类 KitchenlivingRoom

我的基类中有一个 vector

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 并添加到 vector 中。回到 Game 类。我进入 livingRoom 类,当我访问 vector 时,是空的吗?我在这里错过了什么?

最佳答案

子类的不同实例之间不共享基类数据。每个子类都是并且有效地包含基类的一个不同实例。

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

相反,您应该考虑创建另一个类来表示在房间之间移动的实体,并让该实体类包含 pocket。无论一个实体在哪个房间,它总是有相同的口袋

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

关于C++ 子类不能访问其他子类 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44487302/

相关文章:

不同子类的 C++ 链表

c++ - 如何在不复制的情况下将 C++ 类从一个项目重用到另一个项目

c++ - 映射到方法 c++11

android - arraylist.add 在 android 中的编译时错误

c++ - 为什么不能在 C++ 类中重新定义类型名称?

class - 系统Verilog : registering UVM test with the factory

Java - 如何根据相机的旋转创建 3D vector

基于 C++ 的规则引擎

c++ - 构造函数中的引用 vector : uninitialized reference

C++通过函数声明后初始化 vector