c ++如何获取父类中的函数的访问权限?

时间:2017-04-26 11:46:17

标签: c++ class vector

我有课图书和儿童班 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 

1 个答案:

答案 0 :(得分:3)

问题是age不是const成员函数,因此您无法在const引用上调用它。

将声明更改为

int age() const { return 2017 - getage(); }

并确保getage()成员函数也声明为const

int getage() const { ... }

注意:如果您希望自己的代码更长一年以上,那么对当前年份进行硬编码并不是一个好主意。