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
,并且在打印之前从未更新过……还要注意,您没有测试前/后增量的返回值<代码>天哪…谢谢!我快疯了!仅仅一个逻辑错误就可以造成完全不同。。