Vererbung

steffias

Grünschnabel
Klassen_Vererbung: Fehler nicht gefunden!

Ich habe ein kleines Problem, finde absolut meinen Fehler nicht. Kennt ihr das Problem?

<error C2065: 'Heidetal' : nichtdeklarierter Bezeichner
<"ausgabeDaten" : Kein Zugriff auf public Element, dessen Deklaration in der Klasse "Baugrundstueck" erfolgte
< Siehe Deklaration von 'ausgabeDaten'
< error C2065: 'Fassade' : nichtdeklarierter Bezeichner
< warning C4508: 'main' : Funktion sollte einen Wert zurueckgeben; Ergebnistyp 'void' angenommen
Fehler beim Ausführen von cl.exe.

mein Code:
Datei: afg18.h //Basisklasse

#ifndef _BAUGRUNDSTUECK_
#define _BAUGRUNDSTUECK_

class Baugrundstueck {
private:
char gemarkung[30];
int flur,flurstueck,grundstueckf,baujahr,wohnflaeche;
public:
void speicherDaten(char *g,int f,int fs,int gs, int b,int w);
void ausgabeDaten() const;
#endif

};

Datei afg18.cpp

#include <iostream.h>
#include <cstring>
#include "afg18.h"

void Baugrundstueck::speicherDaten(const char *g,int f,int fs,int gs,int b,int w) {
strncpy(gemarkung,g,30);
flur=f;
flurstueck=fs;
grundstueckf=gs;
baujahr=b;
wohnflaeche=w;
}

void Baugrundstueck::ausgabeDaten() const {
cout << "Gemarkung" << gemarkung <<"\n"
<< "Flur:" << flur <<"\n"
<< "Flurstueck:" << flurstueck <<"\n"
<< "Grundstuecksflaeche:" << grundstueckf <<"\n"
<< "Baujahr:" << baujahr <<"\n"
<< "Wohnflaeche:" << wohnflaeche <<"\n";
}

Datei: afg18_1.h //Abgeleitete Klasse

#ifndef _BAUDENKMAL_
#define _BAUDENKMAL_
#include "afg18.h"

class Baudenkmal : private Baugrundstueck {
private:
char schutz[30];
public:
void speicherBaudaten(char *s);
void ausgabeBaudaten();
};
#endif

Datei: 18_1.cpp

#include <iostream.h>
#include <cstring>
#include "afg18_1.h"

void Baudenkmal::speicherBaudaten(char *s) {
strncpy(schutz,s,30);
}

void Baudenkmal::ausgabeBaudaten() {
cout << "Geschuetztes Gebaeudeteil" << schutz <<"\n";
}


Datei: Test18_1.cpp


#include "afg18_1.h"

main()
{
Baudenkmal apotheke;
apotheke.speicherDaten(Heidetal,120,47,325,1749,65);
apotheke.ausgabeDaten();
apotheke.speicherBaudaten(Fassade);
apotheke.ausgabeBaudaten();
}
 
Zuletzt bearbeitet:
Ich habe ein kleines Problem, finde absolut meinen Fehler nicht. Kennt ihr das Problem?

Hallo,

ja ich kenne es aber meistens hilft einfach nur das genau lesen der Fehlermeldung (nur so als kleiner Tipp ;))

<error C2065: 'Heidetal' : nichtdeklarierter Bezeichner

Diese Fehlermeldung sagt dir das du irgendwo das Wort "Heidental" benutz und der Compiler nicht weiß was das "Heidental" ist. (Variable, Class etc.)

Der Fehler ist das du in der main()-Funktion bei der apotheke.speichernDaten("Heidental",120,47,325,1749,65); das Heidental nicht in "" gesetzt hast. Da das aber ein Text ist gehört er darein, alles was nicht in Anführungszeichen steht, wird als Variablen etc. gedeutet und der Compiler findet nun mal keine Variable mit dem Namen ;)

Ich könnte mir aber auch vorstellen, das du einem Zeiger nicht direkt einen "String" übergeben kannst, sondern diesen schon in der main()-Funktion zuweisen müsstest und dann den zeiger übergeben musst. (sicher bin ich mir da auch nicht)

<"ausgabeDaten" : Kein Zugriff auf public Element, dessen Deklaration in der Klasse "Baugrundstueck" erfolgte
< Siehe Deklaration von 'ausgabeDaten'

hier weiß ich ehrlich gesagt nicht warum das so ist, ich könnte mir aber vorstellen das es an dem "const" hinter void ausgabeDaten() liegt.

Wozu brauchst du es da?

< error C2065: 'Fassade' : nichtdeklarierter Bezeichner

Hier müsstest du jetzt den Fehler selber finden können.

< warning C4508: 'main' : Funktion sollte einen Wert zurueckgeben; Ergebnistyp 'void' angenommen

Das ist nur eine Warnung die hätte aber das Compilieren und Starten nicht verhindert. In C++ sollte die main-Funktion immer einen Wert zurückliefern, also
C++:
int main()
{
   //Anweisungen....
   return 0; //Hier wird null zurückgegeben!
]

Hoffe dir etwas geholfen zu haben.

Gruß
Rudolf Grauberger
 
Zuletzt bearbeitet:
Zurück