gpt4 book ai didi

c++ - 二进制表达式 Person 和 Person 的无效操作数

转载 作者:太空狗 更新时间:2023-10-29 23:48:59 27 4
gpt4 key购买 nike

我知道以前在类似情况下曾有人问过这个问题,但是我是 C++ 的新手,无法弄清楚需要做什么或为什么必须这样做。基本上,我使用的是我创建的具有变量名称、年龄、高度和体重的 Person 对象。我需要对我创建的 Person 对象运行快速排序并按年龄对它们进行排序。

人类:

class Person{
private:
string name;
int age, height, weight;
public:
Person(string name = "empty", int age = 0, int height = 0, int weight = 0)
{
this->name = name;
this->age = age;
this->height = height;
this->weight = weight;
};

快速排序方法:

// Quick Sort
void QuickSort(Person *A, int start, int end){
if(start < end){
int p = partition(A, start, end);
QuickSort(A, start, p - 1);
QuickSort(A, p + 1, end);
}
}
int partition(Person *A, int start, int end){
Person pivot = A[end];
int p = start;
for(int i = start; i <= end - 1; i++){
if(A[i] <= pivot){
Person temp = A[i]; A[i] = A[p]; A[p] = temp;
p++;
}
}
Person temp = A[end]; A[end] = A[p]; A[p] = temp;
return p;
}

我收到错误消息“二进制表达式('Person' 和'Person)的操作数无效:

if(A[i] <= pivot)

如有任何帮助,我们将不胜感激,因为我已经尝试了多种方法,并且已经进行了查找,但在这种情况下无法获得其他建议。如果可能的话,我将不胜感激解释为什么我也会收到此错误。谢谢!

最佳答案

C++ 不会自动知道如何对类 Person 执行比较。

如果只想按年龄排序,试试

if(A[i].age <= pivot.age)

如果您想了解如何定义特殊运算符以便“Person <= Person”自动工作,请查看 cppreference.com:http://en.cppreference.com/w/cpp/language/operators

关于c++ - 二进制表达式 Person 和 Person 的无效操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48797496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com