2015-10-14 30 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 =,由于返回的引用被复制,这就是地址改变的原因。这将是一个栈顶地址。