【发布时间】:2020-02-28 21:37:45
【问题描述】:
我重载了== 和!= 运算符,并希望后者引用前者,以免重复任何代码。这是我写的:
bool Date :: operator == (const Date & other) const {
bool are_equal = Year() == other.Year();
for (int i=0; i<other.NumEvents() && are_equal; i++)
are_equal = this[i] == other[i];
return are_equal;
}
bool Date :: operator != (const Date & other) const {
return !(this == other);
}
这里最大的问题是this 不是Date 而是Date*。有没有办法在没有指针的情况下引用this Date 或使用this 和other Date?
【问题讨论】:
-
另外,
this[i] == other[i]几乎肯定不能正确比较*this和other是否相等。 -
@Yunnosch - 是的。但它肯定是将
Date与(参考)与可能不是Date的东西进行比较。除非类Date非常不寻常(例如,有一个返回Date的operator[](int)),否则编译器也会对此进行诊断。 OP 显然只是从编译器读取最后一条错误消息 - 当所询问的问题得到修复时,可能会回来询问有关“新”错误消息的类似问题。 -
@Peter 我同意(并且确实同意),我可能应该说“真的。而且......”。但现在我发现了我错过的情况......
标签: c++ c++11 pointers operator-overloading this