2
typedef map<char,string> someMap;
someMap *mapPtr=someClass.getMap();
*(mapPtr)["a"].length();

このコードの最後の行は失敗します。この作業を行うにはどうすればよいですか?

4

2 に答える 2

3
    (*mapPtr)['a'].length();

演算子は*優先順位が低い[]ため、括弧内にある必要があります。また"a"、必要なのに対し、文字列リテラル(char配列)です'a'

C++ での演算子の優先順位の完全なリストは、ここにあります。

于 2012-04-14T07:29:11.477 に答える
1

[]より優先度が高い*

これはおそらくあなたが意図したものです:

(*mapPtr)["a"].length();

于 2012-04-14T07:27:59.593 に答える