Перестал работать с моим объектом перестал работать - PullRequest
0 голосов
/ 20 декабря 2011

почему-то этот код выдает ошибку

// 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 );
    }

Устав if выдает ошибку. Это действительно не так сложно, и я думаю, я справлюсь с этим. Итак ... roomlist - это карта, roomno - целое число, а rinventory - карта

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

};

Заранее спасибо! Я добавлю ошибки, которые я получу ниже (их две)

c: \ ucdhb2 \ gaia \ logonserver \ v6 \ gaiaserver.cpp (812): ошибка C2679: бинарный '=': не найден оператор, который принимает правый операнд тип 'std :: _ Tree <_Traits> :: iterator' (или нет приемлемого преобразование) 1> с 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocator>, false> 1>] 1> c: \ program файлы \ microsoft visual studio 9.0 \ vc \ include \ xtree (498): может быть «Станд :: _ Tree <_Traits> :: итератор & std :: _ Tree <_Traits> :: iterator :: operator = (const std :: _ Tree <_Traits> :: iterator &) '1> с 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocator>, false> 1>] 1> при попытке сопоставить список аргументов '(std :: _ Tree <_Traits> :: iterator, std :: _ Tree <_Traits> :: iterator) '1> с 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocator>, false> 1>] 1> и 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocator>, false> 1>] 1> c: \ ucdhb2 \ gaia \ logonserver \ v6 \ gaiaserver.cpp (812): ошибка C2678: двоичный '! =': не найден оператор, который принимает левый операнд тип 'std :: _ Tree <_Traits> :: iterator' (или нет приемлемого преобразование) 1> с 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocator>, false> 1>] 1> c: \ program files \ microsoft sdks \ windows \ v6.0a \ include \ guiddef.h (197): может быть оператором int ! = (const GUID &, const GUID &) '1> c: \ program files \ microsoft Visual Studio 9.0 \ vc \ include \ xtree (314): или 'bool std :: _ Tree <_Traits> :: const_iterator :: operator! = (const std :: _ Tree <_Traits> :: const_iterator &) const '1> с 1>
[1>
_Traits = std :: _ Tmap_traits, std :: allocator>, false> 1>] 1> при попытке сопоставить список аргументов '(std :: _ Tree <_Traits> :: iterator, std :: _ Tree <_Traits> :: iterator) '1> с 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocator>, false> 1>] 1> и 1> [1>
_Traits = std :: _ Tmap_traits, std :: allocator>, false> 1>]

1 Ответ

2 голосов
/ 20 декабря 2011

Ваш итератор

map<int, AnItem>::iterator it;

должно быть типа

map<string, long>::iterator it;

на основе вашего комментария (то есть вы перебираете rinventory, а не roomlist).

...