C++ =)运算符的日期和重载
我不知道我是否真的累了,但这段代码给了我 思维方式运行单元测试时出现的问题。下面的代码中是否有任何错误C++ =)运算符的日期和重载,c++,C++,我不知道我是否真的累了,但这段代码给了我 思维方式运行单元测试时出现的问题。下面的代码中是否有任何错误 bool Date::operator <= (const Date& d) const { if (this != &d) { if (day > d.day) return false; if (hour > d.hour) return false;
bool Date::operator <= (const Date& d) const {
if (this != &d) {
if (day > d.day)
return false;
if (hour > d.hour)
return false;
if (minute > d.minute)
return false;
if (second > d.second)
return false;
}
return true;
}
只是为了测试,我用这个丑陋的版本替换了它,所有的测试都通过了
bool Date::operator <= (const Date& d) const {
if (this != &d) {
long a = (86400 * day) + (3600 * hour) + (60 * minute) + second;
long b = (86400 * d.day) + (3600 * d.hour) + (60 * d.minute) + d.second;
return a <= b;
}
return true;
}
有人能帮忙吗?
谢谢 那是行不通的。例如,如果day
bool Date::operator <= (const Date& d) const {
if (this != &d) {
if (day < d.day)
return true;
if (day > d.day)
return false;
if (hour < d.hour)
return true;
if (hour > d.hour)
return false;
if (minute < d.minute)
return true;
if (minute > d.minute)
return false;
if (second > d.second)
return false;
}
return true;
}
我会利用std::tie可用的词典比较来实现bool运算符,然后实现bool运算符我可能会实现类似return*this
#include <tuple>
....
bool Date::operator<(const Date& rhs) const
{
return std::tie(day, hour, minute, second) <
std::tie(rhs.day, rhs.hour, rhs.minute, rhs.second);
}