tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
844
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von sisela
    sisela sisela ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Berlin
    Beiträge
    360
    Hallo,
    ich habe eine Basisklasse mit einer virtuelle Funktion. Diese werden an alle Kindklassen vererbt. Das Problem ist, dass in den Kindklassen unterschiedlich viele Parameter für die Funktion übergeben werden sollen aber in der Basisklasse eine bestimmte Anzahl an Parametern festgelegt ist..

    Wie kann man also an die virtuelle Basisklassenfunktion unterschiedlich lange Parameterlisten übergeben.

    myObject:

    Code :
    1
    2
    3
    4
    
    CBasisklasse* myObject[10];
    myObject[i] = new CKindKlasse(para1, para2);]
     
    myObject[k]->setPara(para1, para2);

    Basisklasse:

    Code :
    1
    
    virtual void setPara();

    Kindklassen:
    Code :
    1
    2
    
    void setPara(para1);
    void setPara(para1, para2)


    Das ergibt einen Fehler, weil ja in der basisklasse kein parameter angegeben ist.

    Was kann man tun.
     

  2. #2
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    Erstens kannst Du mehrere Funktionen überlagern, zweitens kannst Du eventuell nicht benötigte Argumente mit default-Werten versehen. Die default-Werte gibst Du dann in der Basisklasse mit an und schon brauchst Du diese nicht mit einzutragen!
     

  3. #3
    Avatar von sisela
    sisela sisela ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Berlin
    Beiträge
    360
    Ja danke...
    max. Parameter in der Basisklasse und wenn nicht benötigt -> default.

    Hätte man auch selber drauf kommen können.

    Aber so ist das...
     

  4. #4
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    max. Parameter in der Basisklasse und wenn nicht benötigt -> default.
    Pass bei den Defaultparametern auf, dass sie in abgeleiteten Klassen auch mit den selben Werten besetzt werden wie in der Basisklasse, sonst handelst du dir ein ziemliches Vererbungswirrwarr ein. Siehe dazu auch "Effektiv C++ programmieren", Scott Meyers, Kapitel 38.
     

  5. #5
    Avatar von sisela
    sisela sisela ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Berlin
    Beiträge
    360
    Danke für den Hinweis. Ehrlich gesagt funktioniert das mit den Default Parametern ganz gut. Man darf alledings nicht vergessen in den Kindklassen, den Parameter, der eigentlich nicht gebraucht wird mit anzugeben und zu initialisieren.
    Des Weiteren muss ich sagen, dass mir eine andere Methode nicht einfällt, wenn du eine elegantere kennst, nur her mit der Weisheit.

    mfg
    Christian
     

  6. #6
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Genau, aufpassen mit dem Default-Parameter!

    Das ist eine recht solide Lösung, also bleib mal dabei. Man könnte natürlich noch so Sachen machen wie zum Beispiel eine Parameter-Klassenhierarchie entwerfen und als Funktionsparameter nur Listen dieser Parameterobjekte übergeben, aber das wäre wohl ein Schritt in die falsche Richtung.
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  7. #7
    Avatar von sisela
    sisela sisela ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Ort
    Berlin
    Beiträge
    360
    Das wäre eine Möglichkeit aber ich denke dass dies eher unübersichtlicher sein würde. Außerdem, wenn man erst mal eine Lösung hat, hat man meist keine Lust mehr für das gelöste Problem noch eine Lösung umsetzten.
    Aber nichts desto trotz danke... und ich werde das nächste Mal darüber nachdenken.

    mfg
     

Ähnliche Themen

  1. virtual class in Funktion übergeben
    Von elm im Forum C/C++
    Antworten: 13
    Letzter Beitrag: 06.04.10, 13:23
  2. Dynamischer Link mit Variable, Variable an Funktion übermitteln
    Von ihrschweine im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 23.10.09, 14:53
  3. Ein Problem mit _BeginThread's Parameterliste
    Von random-access im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 17.12.08, 17:13
  4. Variable von Funktion an andere Funktion übergeben
    Von BenschM@ster im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 17.08.07, 15:27
  5. Microsoft Virtual PC / Virtual Server zum kostenlosen Download
    Von Thomas Darimont im Forum Microsoft Windows
    Antworten: 1
    Letzter Beitrag: 09.10.06, 08:50