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 konstruktor

    zeiger sin was ganz anderes. die kannst du immer und überall erstellen und löschen


Anmelden zum Antworten