C++ C++;增薪前后

C++ C++;增薪前后,c++,operator-overloading,post-increment,pre-increment,C++,Operator Overloading,Post Increment,Pre Increment,我无法重载后增量方法。 我的预增量很好。 我也有前/后减量,它们都非常有效。 增量体和减量体应相似。唯一的区别应该是++/-,但我不确定为什么我的帖子增量不能像帖子减量一样工作 增量前 upDate upDate::operator++() { int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]); julian++; convertDateToGregorian(julian); ret

我无法重载后增量方法。
我的预增量很好。
我也有前/后减量,它们都非常有效。
增量体和减量体应相似。唯一的区别应该是++/-,但我不确定为什么我的帖子增量不能像帖子减量一样工作

增量前

upDate upDate::operator++() {
   int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
   julian++;
   convertDateToGregorian(julian);
   return (*this);
}
upDate upDate::operator++(int num) {
   upDate temp (*this);
   int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
   julian++;
   convertDateToGregorian(julian);
   return temp;
} 
增量后

upDate upDate::operator++() {
   int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
   julian++;
   convertDateToGregorian(julian);
   return (*this);
}
upDate upDate::operator++(int num) {
   upDate temp (*this);
   int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
   julian++;
   convertDateToGregorian(julian);
   return temp;
} 
后减量

upDate upDate::operator--(int num) {
   upDate temp(*this);
   int julian = convertDateToJulian(datePtr[0], datePtr[1], datePtr[2]);
   julian--;
   convertDateToGregorian(julian);
   return temp;
}
这是我的主要观点:

upDate d5(11, 10, 2004);
++d5;
cout << d5 << endl;
cout << "Expected November 11, 2004\n" << endl;

//not working
upDate d6(11, 11, 2004);
d5++;
cout << d6 << endl;
cout << "Expected November 12, 2004\n" << endl;

upDate d11(12, 3, 1992);
d11--;
cout << d11 << endl;
cout << "Expected: December 2, 1992\n" << endl;
更新d5(11,10,2004);
++d5;

cout您的主菜单中有一个输入错误:

//not working
upDate d6(11, 11, 2004);
d6++;  // <---- you have d5++;
cout << d6 << endl;
cout << "Expected November 12, 2004\n" << endl;
//不工作
更新d6(2004年11月11日);

d6++;// 你打错了。在这个代码片段中

//not working
upDate d6(11, 11, 2004);
d5++;
cout << d6 << endl;
cout << "Expected November 12, 2004\n" << endl;
但输出的d6

cout << d6 << endl;

也就是说,运算符应该返回左值。而您的运算符返回一个临时对象。

@presiuslitelsnoflek这两个递增运算符看起来正常,但递减后的运算符工作不正常,预期值不正确。您的“不工作”再次从先前的测试中递增
d5
,不是
d6
@FredLarson:但不是在增量之后,当他显示
d6
@FredLarson什么
d6
创建为
11/11/2004
,并且在打印之前从未更新过……还要注意,您没有测试前/后增量的返回值<代码>天哪…谢谢!我快疯了!仅仅一个逻辑错误就可以造成完全不同。。