我正在尝试创建一个像
这样的地图std::map<std::map <std::string,std::string>, MyDataTyp*>,
因此我把
std::map<std::string, std::string>
在一个单独的类中:
class TagList {
public:
std::map<std::string, std::string> _map;
TagList() {}
~TagList() {}
void addTag(const std::string tag, const std::string value) { if (tag != "") _map[tag] = value; }
std::string getValue(const std::string tag) {
std::map<std::string, std::string>::iterator it = _map.find(tag);
if (it == _map.end()) return ("");
else return (it->second);
}
};
inline bool operator< (const TagList &a, const TagList &b) {
std::map<std::string, std::string>::iterator it ;
for (it = a._map.begin(); it != a._map.end(); it++) {
std::string myVal1 = it->second;
std::string myVal2 = b._map.find(it->first);
if (myVal2 == "") return false;
if (strcmp(myVal1.c_str(),myVal2.c_str()) > 0) return true;
}
return false;
}
希望有人能解释我的错误信息
错误4错误C2679:二进制'=':找不到运算符,该运算符采用'std :: _ Tree_const_iterator&lt; _Mytree&gt;'类型的右手操作数(或者没有可接受的转换)(...)
......我的理由是什么原因......
答案 0 :(得分:0)
对不起,我的错......
自己找到答案:
inline bool operator< (const TagList &a, const TagList &b) {
std::map<std::string, std::string>::const_iterator it ;
std::map<std::string, std::string>::const_iterator it2 ;
for (it = a._map.begin(); it != a._map.end(); it++) {
std::string myVal1 = it->second;
it2 = b._map.find(it->first);
std::string myVal2 = it2->second;
if (myVal2 == "") return false;
if (strcmp(myVal1.c_str(),myVal2.c_str()) > 0) return true;
}
return false;
}
它不是常量
THX 乔治