2011-12-20 2 views
0

pour quelque raison que ce code renvoie une erreurItère avec mon objet a cessé de travailler

// map<int, AnItem> roomlist; 
// map<string, long> rinventory 

map<int, AnItem>::iterator it; 

for (it = roomlist[roomno].rinventory.beg/in(); it != roomlist[roomno].rinventory.end(); it++) { 

     if((*it).second.name == "Stock") 
      tmpitem.append(strmug); 
    } 

Le si statment jette l'erreur. Ce n'est vraiment pas si complexe et je pense que je pourrais gérer cela. Alors ... roomlist est une carte, roomno est un entier et rinventory est une carte

class AnThing { 

public: 
    AnThing();    // constructor 
    string name;    // name reference 
    int gtid;    // Thing ID 
    string lcname;    // name in lowercase 
    string m_name; 
}; 

class AnItem : public AnThing { 

public: 

    ItemType m_type; 
    int imin; 
    int imax; 
    int ispeed; 
    long unsigned iprice; 
    unsigned int ecoin; 
    GAttributes m_attributes; 

    AnItem(); //Constructs an item with "invalid" values 

    int& Min(); // Returns the min attribute 
    int& Max(); // Returns the max attribute 
    int& Speed(); // Returns the speed attribute 

}; 

Merci à l'avance! Je vais ajouter les erreurs que je reçois ci-dessous (il y en a deux)

c: \ ucdhb2 \ gaia \ logonserver \ v6 \ gaiaserver.cpp (812): erreur C2679: binaire '=': aucun opérateur trouvé qui prend un opérande droit de type 'std :: _ Arbre < _Traits> :: itérateur' (ou il n'y a pas de conversion acceptable ) 1> avec 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocateur>, false> 1>] 1> c: \ program fichiers \ microsoft visual studio 9.0 \ vc \ include \ xtree (498): pourrait être 'std :: _ Arbre _Traits> :: iterator & std :: _ Arbre < _Traits> :: iterator :: operator = (const std :: _ Arborescence < _Traits> :: itérateur &) '1> avec 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocateur>, false > 1>] 1> tout en essayant de correspondre à la liste '(std :: _ Arbre < _Traits> :: iterator, std :: _ Arbre < _Traits> :: iterator __gVirt_NP_NN_NNPS<__) l' argument 1> avec 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocateur>, false> 1>] 1> et 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocateur>, false> 1>] 1> c : \ ucdhb2 \ gaia \ logonserver \ v6 \ gaiaserver.cpp (812): erreur C2678: binaire '! =': aucun opérateur trouvé qui prend un opérande gauche de type 'std :: _ Arborescence < _Traits> :: itérateur' (ou il n'y a pas de conversion acceptable ) 1> avec 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocateur>, false> 1> ] 1> c: \ program files \ microsoft sdks \ windows \ v6.0a \ include \ guiddef.h (197): pourrait être 'int opérateur ! = (Const GUID &, const GUID &)' 1> c: \ program files \ microsoft Visual Studio 9.0 \ vc \ include \ xtree (314): ou 'bool std :: _ Arborescence < _Traits> :: const_iterator :: operator!= (Const std :: _ Arbre < _Traits> :: const_iterator &) const » 1> avec 1>
[1>
_Traits = std :: _ Tmap_traits, std :: allocateur>, false> 1>] 1> tout en essayant de faire correspondre la liste des arguments '(std :: _ Arbre < _Traits> :: iterator, std :: _ Arbre < _Traits> :: iterator)' 1> avec 1> [1>
_Traits = std :: _ Tmap_traits , std :: allocateur>, false> 1>] 1> et 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocateur>, false> 1>]

+0

Quel est le type de 'roomlist' et' rinventory'? – Nawaz

+0

carte liste de pièces; carte rinventory; –

+0

Postez-les dans la question, avec la définition de 'AnItem'. – Nawaz

Répondre

2

Votre iterator

map<int, AnItem>::iterator it; 

a besoin d'être de type

map<string, long>::iterator it; 

en fonction de votre commentaire (à savoir vous itérez sur rinventory, pas roomlist).

+0

Merci, mais je reçois toujours les mêmes erreurs + une nouvelle erreur C2228: left de '.name' doit avoir class/struct/union –

+0

Je pense que quelque chose est très faux dans cette boucle: si vous avez l'intention d'itérer sur «rinventory 'then' (* it) .second' est un 'long', mais vous demandez un membre' name'. Pouvez-vous repenser à ce que vous essayez d'accomplir dans ce code? – atkins

+0

hmm, quand je le change en ça marche bien! mais j'ai encore besoin de trouver les AnObjects que je voulais utiliser dans cette boucle :(Je pense que je peux encore y arriver, sinon je reviendrai, j'apprécie vraiment l'aide! –

Questions connexes