在其他类成员的向量中查找类成员

时间:2014-03-10 19:05:32

标签: c++

我有班级队员和球员。每个团队成员都有一个对象矢量播放器列表,其中存储了他的玩家。每个玩家现在都有一些属性,如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意味着什么?

1 个答案:

答案 0 :(得分:5)

错误为您提供了一个很好的提示:您需要为类Player实现一个等于运算符。这就是std::find用来确定是否找到元素的原因。

或者,您可以将std::find_if与自定义一元谓词一起使用。