【发布时间】:2017-08-09 17:49:51
【问题描述】:
假设我有一个名为 book 的课程:
class Book {
int i;
public:
Book(int ii)
: i(ii) {
}
int ISBN() {
return i;
}
};
我想为 Book 类重载比较运算符,这样我就可以创建一个 bool 函数,在遇到 book1==book2 时比较成员“i”。
bool is_same() {
return (book1==book2) ? true : false;
}
我该怎么做呢?这是我当前拥有的运算符重载函数,它给了我一个“从'bool'类型的右值对'Book&'类型的非常量引用的无效初始化”错误。我目前将类 Book 中的重载函数作为公共函数。
Book& operator==(const Book& b) const {
return ISBN() == b.ISBN();
}
我对运算符重载比较陌生,我已经筛选了很多答案,但没有一个能解决我的问题。我了解如何简单地执行 book1==book2,但只有当每个成员都具有相同的值时才会返回 true。在这种情况下,我不止一个,但我只想在两个对象的“i”相同时返回 true。
【问题讨论】:
-
顺便说一句,
return (book1==book2) ? true : false;可能只是return book1 == book2;