2 "Fast" identische Konstrukoren
-
Hallo,
Folgendes "Problem" habe ich momenta,..
Ich habe 2 Konstruktoren:
Picture(TColor color,int width,int height)Zum Erstellen eines Bildes mit widthxheight und der hintergrundfarbe color
bzw.
Picture(AnsiString dir)Zum laden eins Bildes vom Pfad dir,...
Funktioniert prima, nur was mich ärgert ist, dass sich die beiden Konstruktoren nur minimal unterscheiden --> somit 80% gleichen Inhalt haben,..
Ändere ich nun an einen Konstruktor etwas muss ich im anderen das gleiche ebenso ändern,...Kann ich dies irgendwie eleganter lösen ?
-
Hallo
Zusammenlegen kannst du die Konstruktoren nicht, aber du kannst den Teil der in beiden identisch bzw. ähnlich ist in eine extra (private) Initialisierungsmethode auslagern, die von beiden Konstruktoren aufgerufen wird.
bis bald
akari
-
ahhh,... so quasi eine "Funktion" ?
void Init(){
//hier alles was zu tun ist
}Und bei jeden Konstruktor
Init();Richtig verstanden ?
Danke !
-
Hallo
Ja. Eine Member-Funktion, nicht nur quasi.
bis bald
akari
-
Eine andere Alternative wäre, eine Basisklasse zu erzeugen in deren Konstruktor diese Initialisierungen ablaufen. Dann davon abzuleiten (public). In den neuen Konstruktoren wird der Basisklassenkonstruktor ja automatisch aufgerufen (sofern er trivial ist). Du kannst den Basisklassenkonstruktor natürlich auch selbst in der Initialisierungsliste deiner Konstruktoren aufrufen.