无效的操作数是二进制表达人和人
Invalid Operands to Binary Expression Person and Person
我知道在类似情况下之前已经问了这个问题,但是我是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
类定义<=
操作员。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 有根的二进制搜索树.保留与其父级的链接
- 多态二进制函数
- 正在读取二进制文件(is_open)
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么二进制搜索在我的测试中不起作用
- 重载==不适用于二进制树
- 以下示例中如何避免代码复制?C++/库达
- 正在尝试重载二进制搜索树分配运算符
- 在C++中将类(带有Vector成员)保存为二进制文件
- 难以理解某些人解决IOI问题的源代码
- 如何从二进制文件中读取字符串
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 带有数组键C++的二进制映射
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 无效的操作数是二进制表达人和人