减法中的意外输出

时间:2018-04-30 14:09:32

标签: c++

.o

在此程序中,函数模板相互减去对象。但是,它不能正确输出项目。例如,它应该输出:

  唐纳德米切尔40岁

     

Rita Clayton 35岁

     

年龄差异5岁

目前输出:

  唐纳德米切尔40岁

     

Rita Clayton 35岁

     

年龄差异40岁

如何修复此错误? 谢谢你的时间。

2 个答案:

答案 0 :(得分:4)

您对operator-的定义是错误的。您引用的是gi,而不是您正在进行-的两个人。它应该是这样的:

Person Person::operator-(const Person& p)
{
   Person temp;
   temp.lastName = "Difference";
   temp.firstName = "Age";
   temp.age = this->age - p.age; // You can omit this->
   return temp;
}

这是全球变量咬你的一个很好的例子。如果没有全局变量,编译器会立即向您显示此问题。

答案 1 :(得分:1)

您的操作员功能正在错误地计算年龄。它应该是

temp.age = this->age - p.age