tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
602
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Frankdfe Frankdfe ist offline Mitglied Gold
    Registriert seit
    Apr 2003
    Beiträge
    151
    Hallo!

    Ich habe zwei Klassen A und B;

    Wie kann ich erreichen, dass beim Aufruf des Konstruktors von B eine Instanz von A erzeugt wird ?

    Also in etwas folgendes:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    class B
    {
        A instanzA;
     
        B( )
        {
            static A dummy(100);
            instanzA = dummy;
        }
    }

    Das obige Beispiel dürfte funktionieren, das "static" ist aber nicht sehr schön. Wie kann ich das anders lösen?

    Gruß

    Frank
     
    Der Glückliche phantasiert nie. (Sigmund Freud)
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)
    Daraus folgt: Die Genie's sind nicht glücklich.

  2. #2
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    class B
    {
        A* pInstanzA;
     
        B( )
        {
            pInstanzA = new A(100);
        }
    }
     

  3. #3
    Frankdfe Frankdfe ist offline Mitglied Gold
    Registriert seit
    Apr 2003
    Beiträge
    151
    Danke; das ist besser als mein Versuch.

    Geht das irgendwie auch ohne einen Zeiger zu verwenden?
     
    Der Glückliche phantasiert nie. (Sigmund Freud)
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)
    Daraus folgt: Die Genie's sind nicht glücklich.

  4. #4
    Thomas Kuse Thomas Kuse ist offline Mitglied Rubin
    Registriert seit
    Aug 2001
    Beiträge
    1.411
    besser so:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    class B
    {
        A* pInstanzA;
     
        B( )
        {
            pInstanzA = new A(100);
        }
        ~B()
        {
            delete pInstanzA;
        }
                         
     
    }

    Zeiger gehören halt genauso wie Schleifen zu C++
     

  5. #5
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Ich begreife wohl das Problem nicht ganz.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    class B
    {
        A instanzA;
     
        B( )
        {
            static A dummy(100);
            instanzA = dummy;
        }
    }

    Also B hat ein A als Member? instanzA IST doch bereits eine Instanz von A, daher wohl auch der Name. Dann wird instanzA doch ohnehin im Konstruktor von B automatisch mit dem Defaultkonstruktor des A-Typs initialisiert.

    Wenn instanzA jedoch stattdessen mit 100 initialisiert werden soll, würde ich das in der Initialisierungliste machen. Der B-Konstruktor sähe dann so aus:
    Code :
    1
    2
    3
    
    B( ) : instanzA( 100 )
    {
    }

    Wozu da Zeiger nötig sein sollen, leuchtet mir nicht ein. Sollte ich euch da irgendwie missverstanden haben?
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  6. #6
    Frankdfe Frankdfe ist offline Mitglied Gold
    Registriert seit
    Apr 2003
    Beiträge
    151
    Danke Kachelator, das wollte ich haben
     
    Der Glückliche phantasiert nie. (Sigmund Freud)
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)
    Daraus folgt: Die Genie's sind nicht glücklich.

  7. #7
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Freut mich!
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 18.12.07, 15:38
  2. Objekt Instanz erzeugen ohne Konstruktor aufzurufen
    Von Thomas Darimont im Forum Java
    Antworten: 0
    Letzter Beitrag: 30.03.07, 00:25
  3. Antworten: 1
    Letzter Beitrag: 09.03.06, 10:19
  4. Konstruktor im Konstruktor aufrufen?
    Von zarrandreas im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 03.06.05, 16:45
  5. Antworten: 4
    Letzter Beitrag: 28.10.02, 00:47