2D向量说,类没有名为push_back的成员

2d vector says class does not have member named push_back

本文关键字:push back 成员 向量 2D      更新时间:2023-10-16
ManageShips::ManageShips(vector< Spaceship <Item> > itemShip,
                     vector< Spaceship <Person> > personShip,
                     vector< Item > itemCargo,
                     vector< Person > personCargo){
  m_itemShips = itemShip;
  m_personShips = personShip;
  m_items = itemCargo;
  m_person = personCargo;
}
void ManageShips::LoadItemShip(){
  int numberItemShips = m_itemShips.size();
  int numberOfItems = m_items.size();
  int itemCount = 0;
  for (int i = 0 ; i < numberItemShips ; i++){
    int shipFull = 0;
    double shipWeight = 0;

    while ( shipFull == 0){
      while (itemCount < numberOfItems){
    if ((m_items[itemCount].GetWeight() + shipWeight ) > m_itemShips[i].GetCapacity()){
      shipFull = 1;
    }
    else {
      m_itemShips[i].push_back(m_items[itemCount]);
      shipWeight = m_items[itemCount].GetWeight() + shipWeight;
      itemCount = itemCount + 1;
    }
      }
    }
  }
}

我有一个类型太空飞船的2D矢量,该载体保存类型的数据。我正在尝试将项目对象添加到第一个太空飞船中,但这给了我一个错误,说班级飞船项目没有名为push_back

的成员

这是这条线,我看不到它怎么了。

  m_itemShips[i].push_back(m_items[itemCount]);

帮助。

编辑:如果您要降低我的作用,请给我一个理由。我只是在问一个问题。

m_itemShips是(大概是) std::vector< Spaceship <Item> >m_itemsstd::vector< Item >。(而且您没有提供有关SpaceShipItem是什么的信息)。

这意味着m_itemShips[i].push_back(m_items[itemCount])需要SpaceShip<Item>具有名为push_back()的成员函数,该功能可以接受Item

如果SpaceShip<Item>没有这样的push_back()成员函数,可以解释您的错误消息。

重要的是,即使它具有std::vector<Item>类型的数据成员,SpaceShip<Item>也不会神奇地获取名为push_back()的方法。如果您想要这样的成员函数,则必须定义它。