如何从另一个类访问向量?

时间:2019-03-31 02:20:11

标签: c++ class object vector extern

我是c ++的新手,只是最近才学习的向量。我有一个planes类,在该类中有一个称为planesList的向量。我需要在另一个称为Flights的类中访问该向量内的对象。我不断遇到段故障,需要帮助。

这是我从planes类学习的向量:

public:
    vector<plane*> planeList;

这是flight类,我在其中尝试获取该向量并访问其数据。

void flights::addFlight()
{
    flight* flightptr = new flight;
    string tempTailnum;
    string planeId;
    int currnumpilots;
    planes* p;

    cin.ignore();
    cout << "Enter the plane's tailnumber: ";

    getline(cin, tempTailnum);
    for(int i = 0; i < p->planeList.size(); ++i)
    {
        cout << "hi" << endl;
        if(tempTailnum == p.planeList.at(i)->getTailnumber())
        {
            tempTailnum = planeId;
        }

它进入for循环并显示hi,但随后出现段错误。

1 个答案:

答案 0 :(得分:0)

您创建了一个指向Planes类的指针p,但从未对其进行初始化。您需要使用new关键字创建Planes类的新对象,并将其地址分配给p *

planes *p = new planes();

此外,如果您没有提供任何构造函数来实际在planes类中初始化矢量对象,则编译器将调用默认构造函数,该默认构造函数会将矢量对象初始化为0。请记住,您必须使用当动态范围超出范围时,使用delete关键字将动态分配的内存释放给指向免费存储的指针。

您可以做的另一件事(前提是您已经在其他地方初始化了planes对象)是将向量planeList直接传递给函数,如下所示:

//Function declaration and definition
void addFlight(vector<planes*> p)
{}
//function call
addFlight(p.planeList);

,然后使用此向量访问数据。如果要更改其数据,也可以通过引用传递该向量。