c++ - 按值删除 vector 中的元素

标签 c++ inheritance vector stl polymorphism

如何从 Flight 中检索对象以与 main 中的输入 (flightNumber) 进行比较?如何在 main 中声明属性类型?

当我编译时,显示一条错误消息:invalid conversion of 'int' to '*Flight*'agent1.delete(flightNumber); .

class Flight
{
    int FlightNumber 
};

class TravelAgent
{
    vector <Flight *> flightList;
};

void Agent::delete(Flight *obj)
{
    vector<Flight*>::iterator ptr;
    for(ptr=flightList.begin();ptr!=flightList.end();ptr++)
    {
        if((*Ptr)==obj)
        {
            flightList.erase(ptr);
            break;
        }
    }
    if ((ptr) == flightList.end())
    {
        cout<<"Flight not found"<<endl;
    }
}

int main
{
      Agent agent1;
      int flightNumber;
      cout<<"Enter the number of the flight: "<<flush;
      in>>flightNumber;
      agent1.delete(flightNumber); 
}

最佳答案

您可以在 Flight 类中添加(如果不存在) setter/getter

class Flight{
int FlightNumber;

public:

int getflightNumber(){ return flightNumber;}
};

然后按照以下步骤进行:-

void Agent::delete(int flightNumber)
{
    vector<Flight*>::iterator ptr;
    for(ptr=flightList.begin();ptr!=flightList.end();ptr++)
    {
        if(((*Ptr)->getflightNumber() == flightNumber)
        {
            flightList.erase(ptr);
            break;
        }
    }
    if ((fPtr) == listFlight.end())
    {
        cout<<"Flight not found"<<endl;
    }
}

关于c++ - 按值删除 vector 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33776894/

相关文章:

c++ - 如何使用共享基类遍历std::tuple的元素?

JavaScript 继承和构造函数属性

c# - 在 C# 中调用基本构造函数

C++ - 按自定义数据类型 vector 中的值匹配和替换元素

c++ - 清空一个 std::vector 而不改变它的大小

matlab - 如何在 Matlab 中沿对角线重复一个向量

c++ - C++ 程序员应该了解哪些常见的未定义行为?

c++ - 在命名空间中使用指令导致的错误示例

java - 通用方法使用未知对象类型java

c++ - How to compare "4A4B4C"(string shows hex value) 实际字符串是 "JKL"