[c++]Vererbung

Bismark

Erfahrenes Mitglied
Hallo Leute,

ich habe von der Schulle eine Aufgabe bekommen, bei dem ich ein Programm schreiben soll, das zur Ausleihen von Bücher, DVD und Vhs dienen und mit Klassen und Vererbung erstellt werden soll.

Follgendes Problem, bei der Implementierungsdatei sollen die Methoden nicht in der Unterklasse deklariert worden sein, obwohl sie vererbt wurden sind.

Die Fehlermeldungen:
  • Fehler 1 'setTite': Memberfunktion wurde in 'Buch' nicht deklariert 22
  • Fehler 2 'getTite': Memberfunktion wurde in 'Buch' nicht deklariert 27
  • Fehler 3 'setName': Memberfunktion wurde in 'Buch' nicht deklariert 32
  • Fehler 4 'getName': Memberfunktion wurde in 'Buch' nicht deklariert 37
  • Fehler 5 'setKatego': Memberfunktion wurde in 'Buch' nicht deklariert 42
  • Fehler 6 'getKatego': Memberfunktion wurde in 'Buch' nicht deklariert 47
  • Fehler 7 'autor': nichtdeklarierter Bezeichner 53


Die Implemmetierung, wo die Fehler auftauchen.
Code:
#include <string>
#include "CBuch.h"

Buch::Buch()			//Konstrucktor
{
		string titel = "";
		string k_name = "";
		string kategorie = "";
		string autor = "";
		int ausleidauer = 0;
		int anzahl = 0;
		int isbn = 0;
		int seitenanzahl = 0;
		float preis = 0;
		float costen = 0;
}

void Buch::setTite(string bezeichnung)
{
titel = bezeichnung;
}

string Buch::getTite()
{
return titel;
}

void Buch::setName(string kunde)	
{
k_name = kunde;
}

string Buch::getName()
{
return k_name;
}	

void Buch::setKatego(string bereich)	
{
kategorie = bereich;
}

string Buch::getKatego()
{
return kategorie;
}		

void Buch::setSchrift(string ersteller)
{
autor  = ersteller;
}

string Buch::getSchrift()()
{
return autor;
}

void Buch::setDauer(int nummer)
{
ausleidauer  = nummer;
}

int Buch::getDauer()
{
return ausleidauer;
}

void Buch::setMenge(int anza)
{
anzahl  = anza;
}

int Buch::getMenge()
{
return anzahl;
}

void Buch::setIsbn(int nummer)
{
isbn  = nummer;
}

int Buch::getSchrift(9
{
return isbn;
}

void Buch::setSeiten(int anzahl)
{
seitenanzahl  = nummer;
}

int Buch::getSeiten()
{
return seitenanzahl;
}

void Buch::setMiet(float progression)
{
preis  = progression;
}

float Buch::getMiet()
{
return preis;
}

void Buch::berechneKosten()
{
costen  = anzahl * preis;
}

float Buch::getKosten()
{
return costen;
}


Die Unterklasse, zu dem die Implementierung gehört.
Code:
#include <string>
#include "CVerlei.h"


using namespace std;

class Buch:public Verlei
{
private:		 string Autor;
				 int Isbn;
				 int Seitenanzahl;

public: Buch();		//Konstruktor

				void setSchrift(string);
				string getSchrift();
				void setIsbn(int);
				int getIsbn();
				void setSeiten(int);
				int getSeiten();
};


Die Oberklasse
Code:
#include <string>

using namespace std;

class Verlei
{
private: string titel;
				 string k_name;
				 string kategorie;
				 int ausleidauer;
				 int anzahl;
				 float preis;
				 float costen;


public: Verlei();		//Konstrucktor

				void setTite(string);
				string getTite();
				void setName(string);
				string getName();
				void setKatego(string);
				string getKatego();
				void setDauer(int);
				int getDauer();
				void setMenge(int);
				int getMenge();
				void setMiet(float);
				float getMiet();
				void berechneKosten();
				float getKosten();
};

Ich hoffe ihr könnt mir helfen :rolleyes: :rolleyes:
 
Hi.

Anscheinend möchtest du die Methoden aus der Basisklasse überschreiben. Dann mußt du die Methoden in der Unterklasse auch nochmal deklarieren.

Gruß

PS: Evtl. würde es mehr Sinn machen, die Methoden nur in der Basisklasse zu defininieren?

Der Code im Buch Konstruktor ist ziemlich nutzlos. Du definierst dort lokale Variablen die nur innerhalb des Konstruktors gültig sind. Zum Initialisieren von Klassenmitgliedern solltest du eine Initialisierungsliste verwenden:
C++:
Buch::Buch() : title(""), anzahl(0), ...  {
}
 
Zuletzt bearbeitet:
Ich wollte halt nicht die Methoden der Basisklasse überschreiben lassen, sondern halt nur Vererben lassen.

PS.: muss man die Methoden der Basisklasse nicht in der Implementation der Unterklasse deklarieren?


Lg
 
Zuletzt bearbeitet:
Hi,

die Methoden und Variablen der Oberklasse sollen ja der Unterklasse zur verfügung gesetllt werden, damit die Unterklasse mit denen "Arbeiten" kann und in allen Methoden sollten Prozesse ablaufen. wo müsste man dann die Methoden ?deklarieren?, wenn nicht in der Implementation der Unterklasse. :confused:
 
Hi,

die Methoden und Variablen der Oberklasse sollen ja der Unterklasse zur verfügung gesetllt werden, damit die Unterklasse mit denen "Arbeiten" kann und in allen Methoden sollten Prozesse ablaufen. wo müsste man dann die Methoden ?deklarieren?, wenn nicht in der Implementation der Unterklasse. :confused:
Wenn es Methoden geben soll, die über Vererbung von einer Oberklasse an eine oder mehere Unterklassen weitergegeben werden sollen, dann müssen diese Methoden ausschließlich in der Oberklasse deklariert und dementsprechend auch definiert werden.

Gruß
 
Zurück