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;
}
}
}
}
}
私は、アイテムタイプのデータを保持するタイプの宇宙船の2次元ベクトルを持っています。 アイテムオブジェクトを最初の宇宙船に追加しようとしていますが、クラス宇宙船アイテムにpush_backというメンバがありませんというエラーが表示されます2dベクトルには、push_backという名前のメンバはありません。
これはこの行です。
m_itemShips[i].push_back(m_items[itemCount]);
助けていただければ幸いです。
編集:もしあなたが私に理由を教えてください。私はちょうど質問をしています。
'm_itemShips [i]'は、 'std :: vector'ではなく、' Space Ship- 'となります。 'Spaceship'には' push_back'メソッドがあるかもしれません。もっと多くのことは[mcve]や推測がなければ言えません。トピックから、[Member Initializer List](http://en.cppreference.com/w/cpp/language/initializer_list)を参照してください。 –
user4581301
Spaceshipはテンプレート化されたクラスです。それはpush_backメソッドを持たないが、ManageSupplyクラスは、宇宙船のベクトルを作成するので、push_backにアクセスする必要がある。私は確信していません –
"それはpush_backにアクセスする必要があります"何のpush_back?あなたは1つもない、あなたの問題だと言った。 – mascoj