2017-04-26 1 views
1

Ich habe Klasse Bücher und Kindklasse BookClient.C++ Wie bekomme ich Zugang zu Funktionen der Elternklasse?

In der Klasse Bücher ihre Funktion ist, das Alter von Buch berechnet:

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

I Funktion möge, die Bücher druckt, die > 5 Alter und Form bestimmte Herausgeber sind.

Ich verwende range-basierte für den Zugriff auf die Vec.

vector <BookClient> vec; 

void printageover5(string publisher) 
{ 
    for (const auto& cs : vec) 
    if (cs.age() > 5 && getpublisher()==publisher) 
    { 
     .......... 
    } 
} 

int main() 
{ 
printageover("Amazon"); 
} 

getpublisher() ist Mitglied der Klasse Book-Client

Und ihr ist der Fehler:

the object has type qualifiers that are not compatible with the member function 
object type is: const Books 

Antwort

3

Das Problem ist, dass age keine Funktion const Mitglied ist, so dass Sie nicht anrufen es auf einer const Referenz.

Ändern Sie die Erklärung zu

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

und stellen Sie sicher, dass getage() Member-Funktion auch const deklariert wird.

int getage() const { ... } 

Hinweis: Wenn Sie möchten, dass Ihr Code für länger als ein Jahr richtig sein, um das aktuelle Jahr Hartcodierung ist keine gute Idee.

Verwandte Themen