2015-10-14 31 views
0

我有一組類型爲Team的元素。我想寫一個函數來返回給定元素的地址。 get_team函數接受一個id,並通過一個Team類函數'is_team'比較它,如果該Team對象具有相同的id,則返回布爾值'true'。通過迭代器返回設置對象的地址

1 string TeamA = "ABC"; 
2 Team A = get_team(TeamA); 
3 
4 const Team & get_team(string id) { 
5  for (set<Team>::iterator iter = teams_.begin(); iter != teams.end(); ++iter){ 
6   Team team = *iter; 
7   if (team.is_team(id)){ 
8    return *iter; 
9   } 
10  } 
11 } 

當該運行時,ITER的*的地址(第6行,第8行)是正確的,並存儲在組「teams_」小組對象的地址相匹配。 但是當函數返回的地址不同時(第2行)。

元素的地址和* ITER正確顯示爲:0x0048e930 A隊的地址是:0x0039f47c

我如何得到正確的地址嗎? (我如何製作隊A的地址0x0048e930?)

+0

聽起來像你想用地圖而不是一套.. –

回答

0

如果你想具體說明地址,你會想要一直使用指針。否則,你所犯的錯誤是Team A = vs Team& A =,由於返回的引用被複制,這就是地址改變的原因。這將是一個棧頂地址。