Konstruktor ruft Konstruktor auf (mit Parametern) !?
-
Hi Leute, ich habe folgendes Problem:
Ich habe z.B. eine Klasse "EinWürfel" deren Konstruktor einen Parameter "int length" übergeben bekommt.
Nun habe ich noch eine Klasse "ZweiWürfel" deren Konstruktor auch einen Parameter "int length" (oder ähnliches) übergeben bekommt. Diese Klasse
soll sozusagen zwei "EinWürfel" erstellen d.h. sie soll mit dem Parameter den
Sie selbst bekommt 2mal den "EinWürfel" Kontruktor aufrufen und diesem ebenfalls den Parameter übergeben!ALlerdings schaffe ich es irgendwie nicht den Parameter der 1. Klasse zu nehmen und damit den Konstruktor der 2. Klasse aufzurufen...!?
Wiedermal scheiss kompliziert erklärt, deshalb hier ein bißchen Code (sinngemäß):
COneCube.h
class COneCube { COneCube(int length); int myLength; };
COneCube.cpp
ConeCube:COneCube(int length) { this->myLength=length; }
CTwoCubes.h
class CTwoCubes { CTwoCubes(int length); /* CTwoCubes soll hier 2 einzelne Cubes erstellen mit der Länge die man dem Konstruktor von CTwoCubes übergeben hat */ COneCube a(length); COneCube b(length); };
CTwoCubes.cpp
CTwoCubes::CTwoCubes(int length) { /* folgendes würde zwar gehen... möchte ich aber aus einem bestimmten Grund nicht benutzen... ich will also nicht im nachhinein die Werte zuweisen, sondern wirklich die COneCube's mit Ihren speziellen Konstruktoren starten */ this->a.length=length; this->b.length=length; }
Also nochmal wichtig:
Ich könnte die 2 Cubes zwar einfach als COneCube a,b; erstellen und danach
im Konstruktor wie oben zu sehen die length Werte zuweisen... aber ich möchte
unbedingt die speziellen Konstruktoren von COneCube benutzen....!!!Hat jemand also ne Lösung wie ein Konstruktor seine Parameter nimmt und damit
einen anderen Konstruktor aufruft um die Objekte zu erstellen !?Schöne Grüße
Alex
-
CTwoCubes::CTwoCubes(int length):a(length),b(length) { }
-
THX... das wars, allerdings wäre es nett von Dir (falls Du Zeit hast), wenn
Du mir erklären kannst warum es so gemacht wird. Ich könnte ja auch folgendes
machen (oder?):In CTwoCubes.h
COneCube *a;
und im Konstruktor von CTwoCubes dann
a = new COneCube(length);
Gruß
Alex
-
du könntest auch das machen:
In CTwoCubes.h
int Blah;CTwoCubes::CTwoCubes(int length):Blah(100)
{}
du legts auf die art im konstruktor den startwert der membervariable fest bzw. rufst den konstruktor der instanz auf
das geht nur im konstruktorzeiger sin was ganz anderes. die kannst du immer und überall erstellen und löschen