ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
844
844
EMPFEHLEN
-
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.
-
29.01.04 15:41 #2
- 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!
-
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...
-
29.01.04 17:53 #4
- Registriert seit
- Jul 2003
- Ort
- Duisburg (NRW)
- Beiträge
- 1.788
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.max. Parameter in der Basisklasse und wenn nicht benötigt -> default.
-
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
-
29.01.04 21:49 #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."
-
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
-
virtual class in Funktion übergeben
Von elm im Forum C/C++Antworten: 13Letzter Beitrag: 06.04.10, 13:23 -
Dynamischer Link mit Variable, Variable an Funktion übermitteln
Von ihrschweine im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 23.10.09, 14:53 -
Ein Problem mit _BeginThread's Parameterliste
Von random-access im Forum C/C++Antworten: 6Letzter Beitrag: 17.12.08, 17:13 -
Variable von Funktion an andere Funktion übergeben
Von BenschM@ster im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 17.08.07, 15:27 -
Microsoft Virtual PC / Virtual Server zum kostenlosen Download
Von Thomas Darimont im Forum Microsoft WindowsAntworten: 1Letzter Beitrag: 09.10.06, 08:50





Zitieren
Login






