通过迭代器返回set对象的地址



我有一组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_'中的Team对象的地址匹配。但是,当函数返回地址时,地址是不同的(第2行)。

*iter正确显示的元素和的地址是:0x0048e930A队地址:0x0039f47c

我如何得到正确的地址?(如何制作A队的地址0x0048e930?)

如果你想要指定地址,你会一直使用指针。否则你犯的错误是Team A = vs Team& A =,因为返回的引用被复制了,这就是地址改变的原因。它应该是它上面的堆栈地址

最新更新