无效的操作数是二进制表达人和人

Invalid Operands to Binary Expression Person and Person

本文关键字:达人 二进制 操作数 无效      更新时间:2023-10-16

我知道在类似情况下之前已经问了这个问题,但是我是C 的新手,无法弄清楚需要做什么或必须这样做。基本上,我正在使用我创建的一个人对象,该对象具有变量名称,年龄,身高和体重。我需要快速对我创建的人对象进行快速排序,然后按年龄对其进行排序。

人类课程:

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 不知道如何对班级进行比较。

如果您只想按年龄进行排序,请尝试

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

如果您想了解定义特殊操作员,以便" Person&lt; = Person"会自动工作,请访问CPPReference.com:http://en.cppreference.com/w/cpp/langueage/poperators

您说您想按年龄进行排序,因此您需要比较他们的年龄:

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

您的代码会出现错误,因为您尚未为Person类定义<=操作员。