Salve a tutti, ho difficoltà in questo esercizio, ho provato a vedere quali metodi di std::vector utilizzare, ma non sono per niente sicuro sul loro utilizzo e se possono fare al caso mio e volevo sapere se sono sulla strada giusta.
grazie a chi risponderà
devo usare std::vector come contenitore delle armi.
Devo completare la classe con i metodi :
-addWeapon(Weapon*w); // aggiunge un arma all'inventario
Non so se ho fatto bene ad usare quel metodo
-~Inventory(); // rimuove tutti gli elementi dell'inventario
ho fatto un ciclo for con l'iteratore che me lo scansione tutto e mi cancella gli elementi
- void removeWeapon(int i) // rimuove l'i-esima arma dell'inventario
Ho usato erase ma non sono sicuro sia la soluzione giusta
-Weapon *getWeapon(int i)//prende l'i-esima arma dell'inventario
ho trovato il metodo operator[]
-int useWeapon(int i); // usa l'i-esima arma dell'inventario e rende il valore del suo metodo usando useWeapon, non ho riportato le varie Weapon perché sarebbe stato troppo confusionario ma ci sono
non saprei come farlo questo metodo al momento
-int getNumWeapons();// riporta il numero di elementi dell'inventario
penso il metodo sia giusto solo che mi rende un unsigned long e a me serve un int
FILE .h
#include <vector>
#include "Weapon.h"
class Inventory {
public:
Inventory();
virtual ~Inventory(); // TODO implement
void addWeapon(Weapon* w); // TODO implement
void removeWeapon(int i); // TODO implement
Weapon* getWeapon(int i); // TODO implement
int useWeapon(int i); // TODO implement
int getNumWeapons(); // TODO implement
private:
// TODO add STL vector to hold the weapons
std::vector<Weapon*> wContainer; //vector di weapon stl container
};
FILE C++
#include "Inventory.h"
#include <algorithm>
Inventory::Inventory() {
// TODO bonus activity: preallocate 5 elements
}
Inventory::~Inventory() {
// TODO implement
std::vector<Weapon*>::iterator i;
for(i = wContainer.begin(); i != wContainer.end();i++){
delete *i;
*i = 0;
}
//wContainer.clear();
}
void Inventory::addWeapon(Weapon* w) {
// TODO implement
wContainer.push_back(w);
}
void Inventory::removeWeapon(int i) {
// TODO implement
// uso erase
wContainer.erase(wContainer.begin()+i);
}
Weapon* Inventory::getWeapon(int i) {
// TODO implement
return wContainer.operator[](i);
}
int Inventory::useWeapon(int i) {
// TODO implement
wContainer.operator[](i);
return i;
}
int Inventory::getNumWeapons() {
// TODO implement
int numero;
numero = wContainer.size();
return numero;
}