C++从类的向量的指针访问类的成员

Ben*_*Ben 1 c++ function vector

对不起,这真让我感到困惑,我知道答案是盯着我看,我无法弄清楚.有人可以看看吗?它用于航空公司预订系统学校项目.

此功能接收航班号,容量,航班数量以及包含所有航班作为参数的向量.它将检查以确保航班不存在,如果存在则将显示错误消息,否则将创建航班.航班数量也将增加.

void newFlight( string f, string s, int* n, vector<Flight> *v)
{

    Flight temp;

    //Check to see if flight number exists
    bool alreadyExist = false;
    for (int i=0; i < v->size(); i++)
    {
        if (f.compare((v[i].getNumber()) == 0))
        alreadyExist = true;
    }

    //If it doesn't exist, create it
    if (!alreadyExist)
    {       
        v->push_back (temp);    //Add the new Flight object to the 
                                            //vector of flights
        *n++;           //Increase count
    }

    else
    {
        cout << "A flight numbered " << f << " already exists"; 
        cout << ". Flight not created.\n";
    }   

};
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我尝试比较航班号已经在向量中的航班与我想要添加的航班号.在第7行,我不断收到此消息:

错误:‘class std::vector<Flight, std::allocator<Flight> >’没有名为'getNumber'的成员

有问题的向量是一个带有Flight类的向量,它有一个名为getNumber()的成员.我通过引用将向量传递给函数.所以v是指针,但我认为[]会照顾它.我也尝试使用 - >运算符而不是点运算符,但它没有帮助.我不知所措,任何帮助将不胜感激.我相对生锈,夏天刚刚完成:D我也希望这个格式正确.

Pat*_*ick 5

参数v作为指向vector的指针传递给函数.如果你然后使用[]运算符,它就像在C中一样认为v是指向向量数组的指针,所以v [i]实际上仍然是一个向量.

你应该做的是:

(*v)[i].getNumber();
Run Code Online (Sandbox Code Playgroud)