我不能设置两个用户定义的类声明变量彼此相等?

时间:2016-09-14 18:34:58

标签: c++

所以我在c ++课程中描述了计算机科学基础的输出,并且指示要求我将以下代码复制并粘贴到我的编译器中:

#include <iostream>
#include <string>

using namespace std;

struct student_record
{
    string firstname, lastname;
    double age, income;
    int number_of_children;
    char sex;
};

int main()
{

    student_record Mary;
    student_record Susan;

    cout<<"Enter the firstname and lastname: ";
    cin>>Mary.firstname;
    cin>>Mary.lastname;
    cout<<"Enter age: ";
    cin>>Mary.age;
    cout<<"Enter income: ";
    cin>>Mary.income;
    cout<<"Enter number of children: ";
    cin>>Mary.number_of_children;
    cout<<"Enter sex: ";
    cin>>Mary.sex;

    Susan = Mary;

if (Susan == Mary)// I get the error here: Invalid operands to binary expression('student_record' and 'student_record')
{
    cout<<Susan.firstname<<"    "<<Mary.lastname<<endl;
    cout<<Susan.age<<endl;
    cout<<Susan.income<<endl;
    cout<<Susan.number_of_children<<endl;
    cout<<Susan.sex<<endl;
}
return 0;
}

我不太清楚问题是什么,因为两者属于同一类型,而且还有“Susan = Mary”这一行。没有给出错误。此外,我的实验室中的这个程序的问题并没有让我觉得我应该得到一个错误,所以我很困惑。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

您需要提供比较运算符:

.css()

答案 1 :(得分:0)

C ++提供了一个带有默认构造函数,复制构造函数,赋值运算符(在此处使用)并移动构造函数/赋值的类。

无论好坏,它都不会生成运算符==,因此您必须自己执行(查找运算符重载)。

检查this question背后的原因以及进一步的参考