2012-04-14 109 views
2
typedef map<char,string> someMap; 
someMap *mapPtr=someClass.getMap(); 
*(mapPtr)["a"].length(); 

此代碼的最後一行失敗。我應該怎樣才能做到這一點?STL映射和指針問題

+0

「這段代碼的最後一行失敗。我應該爲了湊合這項工作?「首先不要使用指針(按值或引用返回)。 – 2012-04-14 07:27:08

+0

@daknok_t這不一定是你可以控制的東西 – SirGuy 2012-04-14 07:30:09

+0

@ user1203803沒有幫助 – 2013-08-06 19:14:12

回答

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

*運營商具有比[]較低的優先級,所以你必須,但在括號。此外"a"是字符串字面量(字符數組),而你想'a'

在C運算符優先級的完整清單++可以發現here

1

[]*

這可能是更高的優先級,你打算什麼:

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

+0

還有很多東西要學習......謝謝。 – cngkaygusuz 2012-04-14 07:55:51