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 Zeilenif (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