You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++使用选择排序按类成员getWins()降序排序对象数组的问题

代码修正说明

你的代码存在2个核心错误导致无法正常工作:

  • 参数类型不匹配:你要排序的是自定义类的对象数组,当前参数定义为int array[],和实际要处理的goalies数组类型完全不符。
  • maxValue类型错误:你定义maxValue为int类型,既不能存储自定义类对象,也无法调用getWins()成员方法。

调整后的可用代码

假设你的goalies对应的类名为Goalie,替换为你实际的类名即可:

void sortWins(Goalie array[], int size)
{
    int maxIndex;
    int maxWinVal; // 直接存储胜场数值,避免不必要的对象拷贝
    
    for (int start = 0; start < size - 1; start++)
    {
        maxIndex = start;
        maxWinVal = array[start].getWins();
        for (int index = start + 1; index < size; index++)
        {
            int currentWin = array[index].getWins();
            // 降序判断,胜场更大则更新最大值与对应下标
            if (currentWin > maxWinVal)
            {
                maxWinVal = currentWin;
                maxIndex = index;
            }
        }
        swap(array[maxIndex], array[start]);
    }
}

关键调整点说明

  1. 函数入参从int array[]修改为对应类的对象数组,匹配你要排序的goalies数组类型。
  2. 移除了错误的maxValue对象存储逻辑,改为直接存储getWins()返回的int类型胜场值,既避免了语法错误,也提升了排序效率。
  3. 比较逻辑直接比对胜场数值,完全符合你要求的降序排序规则,最终交换对象位置实现整个数组按胜场排序。

额外注意

如果编译时提示getWins()无法调用,检查你的类定义中getWins()是否声明为const成员,规范的getter写法示例:

int getWins() const {
    return wins; // 替换为你实际的成员变量名
}

内容的提问来源于stack exchange,提问作者user17503500

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:54:03