2013-05-10 3 views
0

으로 사용자 정의 클래스를 삽입 나는 클래스가 있습니다. 다음으로, 다른 클래스에, 나는 괴물의지도를 만들 :C의 ++의 STL 매핑 된 값

map<pair<int, int>, Monster> monsters; // Pair used for x and y coordinate 

monsters.insert(make_pair(10, 10), Monster(10)); 
// Error - No instance of overloaded function 

어떻게 괴물지도로 몬스터 인스턴스를받을 수 있나요? 모든 연산자 오버로드를 추가하여 삽입 할 수는 있지만 작동하지 않습니다!

+0

"win32"라고하는 이유는 무엇입니까? 그것은 그 일과 관련이 없습니다. – asveikau

+0

좋은 지적. 편집 됨. –

답변

0

간단한 방법은 다른 방법으로는 또 다른, 당신은 키 조작 <에 과부하를해야합니까

monsters.insert(map<pair<int, int>, Monster>::value_type(make_pair(10, 10), Monster(10))); 

운영자 과부하가 불필요하다

monsters.insert(make_pair(make_pair(10, 10), Monster(10))); 

입니다

monsters[make_pair(10, 10)] = Monster(10); 

입니다지도에는 표시되지만 v에는 해당되지 않음 alue. 두 번째 경우에는 두 번의 make_pair 호출이 필요하기 때문에 혼란 스러울 수도 있습니다.

+0

AH! 당연하지! 항상 간단한 일입니다. 감사! –

+0

@BrianGradin 첫 번째 예에서는 Monster에 게시자 코드의 경우와 다른 기본 생성자가 필요하다는 것을 추가해야합니다. – john