Problem mit der Abletung einer Klasse
-
Hallo ich stehe irgendwie auf dem Schlauch .
Ich habe eine Basisklasse vbPerson, und möchte nun die Klasse vbPlayer davon ableiten. Ich kann das auch ohne Fehler komilieren allerdings kommt bei der ausführung nicht das gewünschte resultat heraus. ich habe zu debug zwecke mal einige ausgaben gemacht hier der code. ich hoffe es kann mir jemand den richtigen tipp geben dankeschön.Auszug aus vbPerson.cpp
// ********************************************** // File : vbPerson.cpp #include "vbPerson.h" // ********************************************** // Standart - Konstruktor vbPerson::vbPerson() { vbPerson("","",g_iAgeMin); } // ********************************************** // Konstruktor mit Parameter vbPerson::vbPerson(string firstname, string familyname, int age) { vbPerson(firstname,familyname,age); } vbPerson::vbPerson(string firstname, string familyname, int age, float min, float max) { sFirstName = firstname; sFamilyName = familyname; iAge = age; SetTechnicToDefault(min, max); cout << "Person\n"; } // ********************************************** // Destruktor vbPerson::~vbPerson() { } // *****************VbPlayer.cpp
// ********************************************** // File : vbPlayer.cpp #include "vbPlayer.h" // ********************************************** vbPlayer::vbPlayer() { cout << "Player \n"; }und die header dateien
// ********************************************** // File : vbPerson.h #ifndef PERSON_H #define PERSON_H #include "general.h" class vbPerson { public: // ********************************************** // Funktionen - Public vbPerson(); vbPerson(string firstname, string familyname, int age); vbPerson(string firstname, string familyname, int age, float min, float max); ~vbPerson(); const string GetFirstName() { return sFirstName; } const string GetFamilyName() { return sFamilyName; } const int GetAge() { return iAge; } vbResult IncreaseAge(); private: // ********************************************** // Funktionen - Private vbResult SetTechnicToDefault(float min, float max); private: // ********************************************** // Vairablen - Private string sFirstName, sFamilyName; int iAge; Technic sTechnic; }; #endif// ********************************************** // File : vbPlayer.h #ifndef PLAYER_H #define PLAYER_H #include "vbPerson.h" #include "general.h" class vbPlayer : public vbPerson { public: // ********************************************** // Funktionen - Public vbPlayer(); private: // ********************************************** // Funktionen - Private private: // ********************************************** // Vairablen - Private }; #endif
-
Schau dir bitte nochmal genau in deinem Buch an, wie das mit den Konstruktoren funktioniert, was die genau machen und vor allem wie man sie verwenden kann.
vbPerson::vbPerson() { vbPerson("","",g_iAgeMin); // was glaubst du versuchst du hier? }Sagt mir, dass du das noch nicht so verstanden hast.
TIP:
Lagere die Initialisierung in eine Methode mit der Signatur des im Std-Konstruktor verwendeten Konstruktors aus, oder mach aus dem gleich einen Standard-Konstruktor, inem du ihm Default-Werte für die Parameter gibst:class vbPerson { public: vbPerson( string firstname=string(), string secondname=string(), int age=g_iAgeMin ); };Jetzt hast du automatisch einen Standard-Konstruktor!
-
Und was ist das Resultat und was sind deine Erwartungen?