Ergebnis 1 bis 10 von 10

Thema: Probleme bei C++-Vererbung

  1. #1
    Major General Avatar von DonKnilch
    Registriert seit
    21.02.2005
    Ort
    Berlin
    Beiträge
    19.626

    Standard Probleme bei C++-Vererbung

    Hi,

    Ich habe ein kleines Problem bei der Vererbung unter C++. Ich habe eine abstrakte Klasse geschrieben, von der jetzt eine andere Klasse erben soll. Dabei sollen mehrere Funktionen überschrieben werden, die vorher auch nur deklariert, aber nicht implementiert wurden.
    Wenn ich diese dann allerdings in der neuen Klasse überschreiben will, zeigt er mir folgende Fehlermeldung an:
    1>.\start.cpp(32) : error C2511: 'void PositionZahlen::createPossibleMoves(void)': Überladene Memberfunktion nicht in 'PositionZahlen' gefunden
    1> .\start.cpp(8): Siehe Deklaration von 'PositionZahlen'
    Das Seltsame ist: Diese ist durchaus richtig deklariert. Ich weiss wirklich nicht, wo der Fehler liegt (eventuell wirklich nur eine Kleinigkeit).

    Hat jemand von euch eine Idee?

    Vielen Dank

    MfG
    DonKnilch


  2. #2
    Major General
    Themenstarter
    Avatar von DonKnilch
    Registriert seit
    21.02.2005
    Ort
    Berlin
    Beiträge
    19.626

    Standard

    Also die Variablen, die verwendet werden, sind global.

    Es handelt sich, wie gesagt, um eine vererbte Methode in einer Klasse...


  3. #3
    Major General Avatar von SethOS
    Registriert seit
    17.02.2006
    Beiträge
    18.577

    Standard

    Ja, und sowas kommt immer, wenn ich wenig Zeit habe

    Dennoch auf die schnelle:

    Also erstmal muss ich allgemein sagen, daß globale Variablen ein echtes no-no sind. Sollten niemals angewandt werden. Globale Variablen gehören zum sehr schlechten Stil sowohl in C als auch in C++. Wenn Du auf Klasseninternas zugreifen mußt, dann mach das über Getter-/ Setter-Methoden.

    Zum eigentlichen Problem kann ich nur bisher nur schreiben, was auch der Compiler heraus geworfen hat. Er scheint eine Überladene Methode/ Funktion nicht gefunden zu haben. Ohne den Quelltext kann ich dazu allerdings nichts weiter sagen - bin ja kein Hellseher
    "Prophet!" said I, "thing of evil - prophet still, if bird or devil!
    By that Heaven that bends above us - by that God we both adore -
    Tell this soul with sorrow laden if, within the distant Aidenn,
    It shall clasp a sainted maiden whom the angels name Lenore -
    Clasp a rare and radiant maiden whom the angels name Lenore."
    Quoth the Raven, "Nevermore."

    From "The Raven" by Edgar Allan Poe

  4. #4
    Major General
    Themenstarter
    Avatar von DonKnilch
    Registriert seit
    21.02.2005
    Ort
    Berlin
    Beiträge
    19.626

    Standard

    Zitat Zitat von SethOS
    Also erstmal muss ich allgemein sagen, daß globale Variablen ein echtes no-no sind. Sollten niemals angewandt werden. Globale Variablen gehören zum sehr schlechten Stil sowohl in C als auch in C++. Wenn Du auf Klasseninternas zugreifen mußt, dann mach das über Getter-/ Setter-Methoden.
    Das ist mir schon klar und ich habe mich vielleicht falsch ausgedrückt: Also es ist nicht so, dass die Variablen frei herumgeistern und von überall zugreifbar sind. Die werden schon mit Get-/Set-Methoden realisiert...


  5. #5
    Major General Avatar von SethOS
    Registriert seit
    17.02.2006
    Beiträge
    18.577

    Standard

    Dann ist es ja gut. Ich kenne noch sehr viele, die mit globalen Variablen programmieren. Ist leider noch nicht bei allen angekommen, daß man dies tunlichst vermeiden sollte.

    Aber zum eigentlichen Thema kann ich nach wie vor nichts sagen: Du müßtest schon den Quelltext veröffentlichen
    "Prophet!" said I, "thing of evil - prophet still, if bird or devil!
    By that Heaven that bends above us - by that God we both adore -
    Tell this soul with sorrow laden if, within the distant Aidenn,
    It shall clasp a sainted maiden whom the angels name Lenore -
    Clasp a rare and radiant maiden whom the angels name Lenore."
    Quoth the Raven, "Nevermore."

    From "The Raven" by Edgar Allan Poe

  6. #6
    Major General
    Themenstarter
    Avatar von DonKnilch
    Registriert seit
    21.02.2005
    Ort
    Berlin
    Beiträge
    19.626

    Standard

    Ja, wenn ich mal Zeit habe, dann werde ich den mal rauskramen...


  7. #7
    Major General Avatar von SethOS
    Registriert seit
    17.02.2006
    Beiträge
    18.577

    Standard

    Joar - bin ab morgen aber ne Weile nicht mehr am PC. Aber wer auch immer hilft braucht ja auf jeden Fall den Code.
    "Prophet!" said I, "thing of evil - prophet still, if bird or devil!
    By that Heaven that bends above us - by that God we both adore -
    Tell this soul with sorrow laden if, within the distant Aidenn,
    It shall clasp a sainted maiden whom the angels name Lenore -
    Clasp a rare and radiant maiden whom the angels name Lenore."
    Quoth the Raven, "Nevermore."

    From "The Raven" by Edgar Allan Poe

  8. #8
    Major General
    Themenstarter
    Avatar von DonKnilch
    Registriert seit
    21.02.2005
    Ort
    Berlin
    Beiträge
    19.626

    Standard

    So, hier mal die ganze Klasse:

    class PositionZahlen : public Position {

    private:
    vector<Position*> moves;
    string description;
    int zahl;

    public:
    void createPossibleMoves()const;
    PositionZahlen(int startzahl);
    vector<Position*> possibleMoves() const;
    bool isGoal() const;
    string moveDescription(Position* next)const;
    bool equals(Position* other)const;
    string toString()const;

    };

    PositionZahlen::PositionZahlen(int startzahl) {
    zahl=startzahl;
    }

    void PositionZahlen::createPossibleMoves() {
    PositionZahlen pos1 = new PositionZahlen(7);

    }


  9. #9
    Gunnery Sergeant Avatar von Alp
    Registriert seit
    27.01.2006
    Beiträge
    325

    Standard

    Ich lerne C++ erst seit ner Woche, aber ich denke es fehlt der überladene Operator = da er wohl intern aufgerufen wird so wie die Fehlermeldung klingt. Ein Copy-Kontruktor kann auch nicht schaden.

  10. #10
    Private
    Registriert seit
    26.06.2006
    Ort
    Schalksmühle
    Beiträge
    16

    Standard

    Kann es sein das es heissen muss

    void PositionZahlen::createPossibleMoves() {
    PositionZahlen *pos1 = new PositionZahlen(7);
    }

    ?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Probleme mit Rechner seit AMD 3200+ Prozzi
    Von Nuclear-Ping im Forum Allgemeines
    Antworten: 30
    Letzter Beitrag: 23.11.2005, 14:55
  2. Probleme mit Bluescreens
    Von SonMokuh im Forum Archiv Hardwareberatung
    Antworten: 11
    Letzter Beitrag: 22.03.2005, 21:51
  3. Probleme mit Komponenten, keine Antwort auf Mail.
    Von IrieDread im Forum Allgemeines
    Antworten: 15
    Letzter Beitrag: 17.03.2005, 01:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •