Zugriff auf Funktion der Basisklasse



  • Hallo ich habe folgenden COde

    #ifndef PERSON_H
    #define PERSON_H
    
    #include "GlobalInclude.h"
    
    class Team;
    
    class Person
    {
    public:
    	Person(string name, string prename, int age);
    	~Person();
    
    	string GetName() { return sName; }
    	string GetPrename() { return sPrename; }
    	int GetAge() { return iAge; }
    	Team* GetTeam() { return pTeam; }
    
    	Result SetTeam(Team *team);
    	Result RemoveTeam();
    
    private:
    	string sName,sPrename;
    	int iAge;
    	Team *pTeam;
    };
    
    #endif
    
    #ifndef PLAYER_H
    #define PLAYER_H
    
    #include "GlobalInclude.h"
    #include "Person.h"
    
    class Player : public Person
    {
    public:
    	Player(string name, string prename, int age) : Person(name, prename,age)
    	{
    	}
    	~Player();
    
    	Result SetTeam(Team *team);
    	Result RemoveTeam();
    
    	Result SetTechnic(int index, float min, float max);
    	Result SetTechnic(int index, float value);
    	float GetTechnic(int indexStart, int indexEnd);
    
    	Result SetTactic(int index, float min, float max);
    	Result SetTactic(int index, float value);
    	float GetTactic(int indexStart, int indexEnd);
    
    	Result SetFitness(int index, float min, float max);
    	Result SetFitness(int index, float value);
    	float GetFitness(int indexStart, int indexEnd);
    
    private:
    	float aTechnic[iNumberAction], aFitness[iNumberFitness], aTactic[iNumberTactic]; 
    };
    
    #endif
    
    // -------------------------------------------------- //
    // Füge eine Referenz auf die Mannschaft hinzu
    // -------------------------------------------------- //
    Result Person::SetTeam(Team *team)
    {
    	pTeam = team;
    	cout << "schreibe : " << team->GetName().c_str() << "\n";
    	return OK;
    }
    
    // -------------------------------------------------- //
    // Füge eine Referenz auf die Mannschaft hinzu
    // -------------------------------------------------- //
    Result Player::SetTeam(Team *team)
    {
    	if (team == NULL)
    		return POINTER_NULL;
    
    	if (GetTeam() != NULL)
    		return POINTER_EXITS;
    
    	if (team->AddPlayer(this) == OK)
    		return Person::SetTeam(team);
    
    	cout << "Set \n";
    
    	return POINTER_EXITS;
    }
    

    Leider wird die Funktion aus Person::SetTeam nicht aufgerufen.
    Weiß jemand warum



  • Ich schätze, weil team gleich NULL ist, GetTeam() ungleich NULL ist oder AddPlayer nicht OK ist. 😉
    Breakpoint rein, dann weisst du's.



  • if (team->AddPlayer(this) == OK)
            return Person::SetTeam(team);
    

    Und du bist dir sicher, dass team->AddPlayer() überhaupt OK zurückgeben kann?
    Wie und wo rufst du AddTeam auf?

    // edit:
    Naja, nach diesen Zeilen

    if (team == NULL)
            return POINTER_NULL;
    
        if (GetTeam() != NULL)
            return POINTER_EXITS;
    

    bist du sicher aus deiner Funktion draußen.
    entweder ist team == NULL oder eben !=NULL. und GetTeam liefert ja genau team zurück.



  • Danke habe den Fehler gefunden. Der aufruf war verkehrt. Danke


Anmelden zum Antworten