Initialisierung von Objekten
-
Hi,
sagen wir mal ich habe folgende Klassen:
.h file
class A { public: A(); }; class B { public: B(A a); }; class C { A a; B b; C(A a, B b); C(D d); };.cpp file
#include "A.h" A::A() { // TODO Auto-generated constructor stub } B::B(A a) { } C::C(A a, B b) : b (a) { } C::C(D d) : ? { }C besitzt also zwei Objekte von A und B. Da A und B Klassenmember sind müssen diese in der Initialisierungsliste initialisert werden. Konstruktor 1 von C macht das auch. Aber Konstruktor 2 kann das nicht machen, da es im Moment noch kein A oder B Objekt gibt. (Ich hab ein Fragezeichen gemacht, wo ich nicht weiß was da hingehört.)
Wie löst man das Problem?
-
Äh...
Dir ist schon klar das C mit Klassen nix am Hut hat.
Wolltest du ins C++-Forum?
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum C++ (auch C++0x) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ach verdammt stimmt sorry.
-
nightrider schrieb:
Wie löst man das Problem?
Man gibt b ein A.
-
Es ist dir garantiert, dass die Member in der Reihenfolge initialisiert werden, wie sie in der Klassendefinition stehen. Also entsteht das A immer vor dem B (und die Reihenfolge in der Initialisierungsliste ist vollkommen egal). Also kannst du problemlos schreiben:
C::C(D d) : b(a)
-
Was ist denn D?
-
-
-
Ja stimmt, hab einen Gedankenfehler gehabt.
Danke euch!
