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]); } }
关键调整点说明
- 函数入参从
int array[]修改为对应类的对象数组,匹配你要排序的goalies数组类型。 - 移除了错误的
maxValue对象存储逻辑,改为直接存储getWins()返回的int类型胜场值,既避免了语法错误,也提升了排序效率。 - 比较逻辑直接比对胜场数值,完全符合你要求的降序排序规则,最终交换对象位置实现整个数组按胜场排序。
额外注意
如果编译时提示getWins()无法调用,检查你的类定义中getWins()是否声明为const成员,规范的getter写法示例:
int getWins() const { return wins; // 替换为你实际的成员变量名 }
内容的提问来源于stack exchange,提问作者user17503500
相关产品推荐
相关产品推荐

