C++ map에서 <div>직접 만든 class 를 key 로 쓰려면</div> <div>map 이 std::less<KeyType> 을 사용하기 때문에</div> <div>key 로 쓰는 class 에서 operator< 만 overloading 하면 된다고</div> <div>google 이 그렇다고하네요</div> <div><br></div> <div>그래서 다음과 같이 해보았습니다</div> <div><br></div> <div><div>class A{</div> <div>public:</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>int a;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>bool operator<(const A& other) {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return this.a < other.a;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div> <div>};</div> <div><br></div> <div>int main() {</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>map<A, int> m;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>A x;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>A y;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>x.a=1;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>y.a=2;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>m[x] = 5;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>m[y] = 6;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>cout << m[x] << endl;</div> <div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 0;</div> <div>}</div></div> <div><br></div> <div><br></div> <div>google 말 대로라면 잘 작동해야 하지만 다음과 같은 에러가 뜨네요.;;</div> <div><br></div> <div><div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201409/1410962324o7N9tbMCyzxsbaRSFOcJyp.png" width="800" height="449" alt="제목 없음.png" class="chimg_photo" style="border:none;"></div><br></div> <div><br></div> <div>염치없지만 도와주세요 ㅠㅠ</div> <div>대략 const A 를 less에 넘겨주는게 문제라는 뜻 같은데;;</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.