Problem bei auslagerung von Klassen in Header
-
hi,
ich habe versucht einen Code ,in dem die Klassen in der main.cpp waren auszulagern in header Dateien. Dabei ist wohl etwas schief gegangen. Naja seht selbst:
main.cpp:
#include <cstdlib> #include <iostream> #include <string> #include "Person.h" #include "Konto.h" using namespace std; // -- Programm -- int main(int argc, char *argv[]) { // neue person Person helge("Helge","Maus"); // Neues Konto Konto kto( helge, 11.73 ); cout << "Kontostand: " << kto.getKontostand() << endl; cout << "Inhaber: " << kto.inhaber.getName() << endl; system("PAUSE"); return EXIT_SUCCESS; }Person.h
#include <string> using namespace std; class Person { // Eigenschaften string vorname; string name; // Methoden public: Person(string vorname, string name); void setName(string vorname, string name); string getName(); };Person.cpp:
#include "Person.h" #include <string> using namespace std; Person::Person(string v, string n) : // init vorname( v ), name( n ) { } void Person::setName( string v, string n) { vorname = v; name = n; } string Person::getName() { return vorname + " " + name; }Konto.h:
#include <string> using namespace std; // -- Klasse Konto -- class Konto { // Eigenschaften double stand; // Methoden public: Person inhaber; Konto( Person inh, double std ); void setKontostand( double std ); double getKontostand(); string getInhaber(); };Konto.cpp
#include <string> #include "Konto.h" #include "Person.h" using namespace std; Konto::Konto( Person inh, double std ) : // init inhaber( inh ), stand (std ) {} void Konto::setKontostand(double std ) { stand = std; } double Konto::getKontostand() { return stand; }Fehlermeldungen:
1.\konto.h(13) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'inhaber'2.\konto.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
3.\konto.h(13) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
4.\konto.h(14) : error C2061: Syntaxfehler: Bezeichner 'Person'
5.\konto.cpp(7) : error C2511: 'Konto::Konto(Person,double)': Überladene Memberfunktion nicht in 'Konto' gefunden
6.\konto.h(7): Siehe Deklaration von 'Konto'
7.\konto.cpp(22) : fatal error C1004: Unerwartetes Dateiende gefunden.Falls euch sonst noch was auffällt oder ihr andere Tipps habt, könnt ihr diese gerne einbringen.
gruß
-
1. Du brauchst Header Guards. Wenn du keine Header Guards machst, wird die Lösung, welche ich dir gleich sage, weitere Fehler bringen.
2. In Konto.h muss ein#include "Person.h"rein, damit dort die Person bekannt ist.Header Guard:
http://en.wikipedia.org/wiki/Header_guardGrüssli
-
Vielen Dank funktioniert jetzt alles.
