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!


  • Mod

    Und was ist das Resultat und was sind deine Erwartungen?


Anmelden zum Antworten