我有班级队员和球员。每个团队成员都有一个对象矢量播放器列表,其中存储了他的玩家。每个玩家现在都有一些属性,如ID。现在我想将一名球员转移到一支球队。所以我为此创建了一个函数。
首先,我想知道玩家b是否已经是团队成员a,在这种情况下应该打印出一条消息。但是我写了一个能做到这一点的功能失败了。
这是我的尝试(搜索从if循环开始,我想知道玩家b是否是团队成员a)
#include <vector>
#include <string>
#include <iostream>
using namespace std;
class Player
{
public:
private:
};
class Team
{
public:
vector<Player> getplayerlist(){
return playerlist;
}
string getteamname(){
return teamname;
}
void playerbuy(Team a, Player b)
{
vector<Player> playerlist;
playerlist = a.getplayerlist();
if (find(playerlist.begin(), playerlist.end(), 5) != playerlist.end()) {
}
else {
cout << "This player is not member of " << a.getteamname();
}
}
private:
vector<Player> playerlist;
string teamname;
};
int main()
{
return 0;
}
我收到了错误C2678:binary'==':找不到运算符,它接受类型为'Player'的左手操作数(或者没有可接受的转换)。我想通了我来自
行if (find(playerlist.begin(), playerlist.end(), 5) != playerlist.end())
=! playerlist.end()似乎错了。这部分代码是另一个代码的副本,所以我不知道它的作用。我应该把它放在那里呢? 5意味着什么?
答案 0 :(得分:5)
错误为您提供了一个很好的提示:您需要为类Player
实现一个等于运算符。这就是std::find
用来确定是否找到元素的原因。
或者,您可以将std::find_if
与自定义一元谓词一起使用。