【发布时间】:2016-12-15 23:28:56
【问题描述】:
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[i]看起来是Spaceship <Item>,而不是std::vector。Spaceship可能有也可能没有push_back方法。如果没有minimal reproducible example 或猜测,就不能说更多。题外话,看看使用Member Initializer List。 -
Spaceship 是一个模板类。它没有 push_back 方法,但 ManageSupply 类创建了一个 spaceship
类型的向量,因此它应该可以访问 push_back。我不确定 -
"所以它应该可以访问 push_back" 什么 push_back?你说没有,那是你的问题。
-
c++ 中的向量可以访问向量库中内置的 push_back 方法吗?
-
m_itemShips是一个std::vector并且有一个push_back方法。m_itemShips[i]是从vectorm_itemShips获取i的项目的请求。i中的项目是Spaceship <Item>。您在Spaceship <Item>上拨打push_backi,而不是m_itemShips。