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

ここで、タイプは自分の特別なクラスです。なぜC++は私が渡したタイプに[]が一致しないと言っていますか?

初期化(なぜ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>>>(); 

そして最後にタイプ)

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

C++はプログラミング言語ですが、あなたには言いません。あなたのコンパイラは何を言っていますか? (どんなコンパイラを使用しているのか、そして何がエラーや警告になっているのですか?) – dreamlax

+2

なぜあなたは非常に多くのポインタを使用していますか?コードの臭いのようです。 –

+1

コンパイラとアロケータが欲しいものがすべてデフォルトの場合は、そのスペルを書く必要はありません。ちょうどそれらを放棄してください。 –

答えて

5

優先度がCONSTマップへのポインタであるが、操作者が[] const associative containersで使用することができません。

+0

ありがとう、それは固定=) – nestharus

+0

@ user1136671 operator [] can not引数がまだマップにない場合は、実際に新しい要素をマップに挿入するため、constと一緒に使用してください。 – Matthias

関連する問題