由于某种原因,此代码会抛出错误
// 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 statment抛出错误。它真的不那么复杂,我认为我可以处理这个问题。所以... 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: binary'=':找不到带右手操作数的运算符 输入'std :: _ Tree&lt; _Traits&gt; :: iterator'(或者没有可接受的 转换)1>用1> [1> _Traits =标准:: _ Tmap_traits,性病::分配器&GT;,假&gt; 1 GT; ] 1&gt; C:\程序 files \ microsoft visual studio 9.0 \ vc \ include \ xtree(498):可能是 “的std :: _树&LT; _Traits&GT; ::迭代 &amp; std :: _ Tree&lt; _Traits&gt; :: iterator :: operator =(const std :: _ Tree&lt; _Traits&gt; :: iterator&amp;)'1&gt;用1> [1> _Traits =标准:: _ Tmap_traits,性病::分配器&GT;,假&gt; 1 GT; ] 1&gt;而试图匹配 参数列表'(std :: _ Tree&lt; _Traits&gt; :: iterator, std :: _ Tree&lt; _Traits&gt; :: iterator)'1&gt;用1> [1> _Traits =标准:: _ Tmap_traits,性病::分配器&GT;,假&gt; 1 GT; ] 1&gt;和1> [1> _Traits =标准:: _ Tmap_traits,性病::分配器&GT;,假&gt; 1 GT; ] 1&gt; c:\ ucdhb2 \ gaia \ logonserver \ v6 \ gaiaserver.cpp(812):错误C2678: binary'!=':找不到带左手操作数的运算符 输入'std :: _ Tree&lt; _Traits&gt; :: iterator'(或者没有可接受的 转换)1>用1> [1> _Traits =标准:: _ Tmap_traits,性病::分配器&GT;,假&gt; 1 GT; ] 1&gt; c:\ program files \ microsoft sdks \ windows \ v6.0a \ include \ guiddef.h(197):可能是'int运算符 !=(const GUID&amp;,const GUID&amp;)'1&gt; c:\ program files \ microsoft visual studio 9.0 \ vc \ include \ xtree(314):或'bool std :: _ Tree&lt; _Traits&gt; :: const_iterator :: operator!=(const std :: _ Tree&lt; _Traits&gt; :: const_iterator&amp;)const'1&gt; 1 >> [1> _Traits =标准:: _ Tmap_traits,性病::分配器&GT;,假&gt; 1 GT; ] 1&gt;而试图匹配 参数列表'(std :: _ Tree&lt; _Traits&gt; :: iterator, std :: _ Tree&lt; _Traits&gt; :: iterator)'1&gt;用1> [1> _Traits =标准:: _ Tmap_traits,性病::分配器&GT;,假&gt; 1 GT; ] 1&gt;和1> [1> _Traits =标准:: _ Tmap_traits,性病::分配器&GT;,假&gt; 1 GT; ]
答案 0 :(得分:2)
你的迭代器
map<int, AnItem>::iterator it;
需要是
类型map<string, long>::iterator it;
根据您的评论(即您正在迭代rinventory
,而不是roomlist
)。