使用排序时C++无效操作符

使用排序时C++无效操作符,c++,string,sorting,operator-keyword,C++,String,Sorting,Operator Keyword,主要内容如下: sortPlayers.begin、Players.end、sortingGame 下面是在VisualStudio中调试时显示的错误 bool sortingGame(Player Player1, Player Player2) { if (Player1.gamePercent() > Player2.gamePercent())// first compare precetage (float) { return true;

主要内容如下:

sortPlayers.begin、Players.end、sortingGame

下面是在VisualStudio中调试时显示的错误

bool sortingGame(Player Player1, Player Player2)
{
    if (Player1.gamePercent() > Player2.gamePercent())// first compare precetage (float)
    {
        return true;
    }
    else if (Player2.gamePercent() > Player1.gamePercent())
    {
        return false;
    }
    else if (Player1.getLastName() > Player2.getLastName())//then names (std::string)
    {
        return true;
    }
    else if (Player2.getLastName() > Player1.getLastName())
    {
        return false;
    }
    else if (Player1.getFirstName() > Player2.getFirstName())
    {
        return true;
    }
    else
    {
        return false;
    }
}

当我模拟一个players类并运行您的代码时,它工作得很好。该错误必须属于其他地方

但是,通过检查是否相等并返回比较结果,您的代码可能会大大收紧:

Program:C:\.....\include\algorithm
Line:3014
Expression: invalid operator<

还要考虑字符串通常按字母顺序的相反顺序列出。因此,小于运算符和3014是哪一行?不确定。。。在include@pinesfirst中,Visual Studio错误可能是由运算符引起的。此外,您应该通过常量引用而不是值将对象传递给函数
bool sortingGame(Player Player1, Player Player2)
{
    if (Player1.gamePercent() != Player2.gamePercent())// first compare precetage (float)
    {
        return Player1.gamePercent() > Player2.gamePercent();
    }
    else if (Player1.getLastName() != Player2.getLastName())
    {
        return Player1.getLastName() > Player2.getLastName();
    }
    else
    {
        return Player1.getFirstName() > Player2.getFirstName();
    }

}
bool sortingGame(Player Player1, Player Player2)
{
    if (Player1.gamePercent() != Player2.gamePercent())// first compare precetage (float)
    {
        return Player1.gamePercent() > Player2.gamePercent();
    }
    else if (Player1.getLastName() != Player2.getLastName())
    {
        return Player1.getLastName() < Player2.getLastName();
    }
    else
    {
        return Player1.getFirstName() < Player2.getFirstName();
    }

}