2012-05-06 2 views
2
static const map<const Type*, int>* priority; 

여기서 Type은 내 자신의 특수 클래스입니다.C++이 내가 전달한 유형과 []가 일치하지 않는다고 말하는 이유는 무엇입니까?

초기화

const map<const Type*, int, less<const Type*>, allocator<pair<const Type* const, int>>>* ToolProperty::priority 
= new map<const Type*, int, less<const Type*>, allocator<pair<const Type* const, int>>>(); 

그리고 (이을 요구 C++ 내가 아무 생각이 왜, 자동차도 작동하지 않을 것입니다) 마지막으로, 그것은 나를 말하고 어디 잘못 전달하고있어 것을 (그것을 사용하려고 타입)

static void setPriority(const Type* type, int newPriority) 
{ 
    (*priority)[type] = newPriority; 
} 
+0

C++는 프로그래밍 언어이며, 사용자에게 알려주지 않습니다. 당신의 컴파일러는 무엇을 말하고 있습니까? (어떤 컴파일러를 사용하고 있는지, 그리고 어떤 오류나 경고가 나옵니까?) – dreamlax

+2

왜 많은 포인터를 사용하고 있습니까? 약간의 코드 냄새가 나는 것처럼 보입니다. –

+1

당신이 원하는 것이 모두 기본값이라면 Comparator와 할당자를 쓸 이유가 없습니다. 그냥 내버려둬. –

답변

5

순위가 CONST 맵 포인터이지만 연산자 [] const associative containers으로 사용될 수 없다.

+0

고마워요, 고쳐졌습니다 =) – nestharus

+0

@ user1136671 operator [] can not const와 함께 사용하십시오. 인수가 이미 맵에없는 경우 실제로 새 요소를 맵에 삽입하기 때문입니다. – Matthias

관련 문제