我有课图书和儿童班 BookClient 。
在课程图书中,他们是计算图书年龄的函数:
int age()
{return 2017 - getage();}
我想要打印> 5岁的图书的功能,并且是某个出版商的形式。
我使用基于范围的 for循环来访问 vec。
vector <BookClient> vec;
void printageover5(string publisher)
{
for (const auto& cs : vec)
if (cs.age() > 5 && getpublisher()==publisher)
{
..........
}
}
int main()
{
printageover("Amazon");
}
getpublisher()是Book Book
类的成员他们的错误是:
the object has type qualifiers that are not compatible with the member function
object type is: const Books
答案 0 :(得分:3)
问题是age
不是const
成员函数,因此您无法在const
引用上调用它。
将声明更改为
int age() const { return 2017 - getage(); }
并确保getage()
成员函数也声明为const
。
int getage() const { ... }
注意:如果您希望自己的代码更长一年以上,那么对当前年份进行硬编码并不是一个好主意。