0

我有一个矢量播放器,我想对其进行迭代。“玩家”结构如下所示:

struct player { string name; int rating; };

我在 for 循环中使用迭代器来查看是否有任何“玩家”的名称为“玩家名称”(一个字符串)。

for (vector<player>::iterator itr = players.begin(); itr != players.end(); ++itr) { if (playerName.compare(*itr->name) == 0) return true; } return false;

不幸的是,我一直遇到一个错误:“错误 C2100:非法间接”(visual C++ 2008)。我相信我不正确地取消引用迭代器;有更好的方法吗?

4

2 回答 2

4

*itr->name相当于(*itr)->name

在您的代码中,类型(*itr)is player, not player*,因此编译器基本上是在告诉您您正在尝试取消引用不是指针的东西。

这样做的正确方法是(*itr).nameor itr->name,两者都表示“取消引用 itr 然后访问名称”。

于 2012-11-20T03:43:28.070 回答
2

我相信我不正确地取消引用迭代器;

请参阅更正的代码:

if (playerName.compare(itr->name) == 0)

或者

if (playerName.compare((*itr).name) == 0)  
于 2012-11-20T03:25:47.410 回答