运营商LT;用户定义的地图密钥 - C2679

时间:2018-05-14 09:42:53

标签: visual-c++ operator-keyword stdmap

我正在尝试创建一个像

这样的地图
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;'类型的右手操作数(或者没有可接受的转换)(...)

......我的理由是什么原因......

1 个答案:

答案 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 乔治