Konflikt von Klassenreihenfolgen
-
Hallo,
Ich habe etwas vereinfacht formuliert folgendes Problem:
class A { B *p2B; }; class B { A *p2A; };
man müsste also immer die eine klasse vor der anderen deklarieren um die ganze geschichte zu compilieren.
wie kann ich diesen konflikt auflösen??
LG
-
Muss man nicht:
class A; //google nach forwärtsdeklaration class B { A* pA; }; class A { B b; //geht B* pB; //geht auch };
-
Ein Zeiger ist immer ein vollständiger Typ, auch dann, wenn der Typ, auf den gezeigt wird, unvollständig ist (schließlich kannst du auch void* benutzen, ohne void zu definieren). Es genügt also eine Deklaration der jeweiligen Klasse:
class B; // Deklaration class A { // Definition B *p2B; // B ist hier unvollständig, nicht aber B* }; class B { // Definition A *p2A; };
-
Problem kommt erst wenn du in dem Fall aus A ein B Objekt erzeugst, bzw. in B ein A Objket erzeugst. Da mekerst de compiler, weil er in B den A Konstruktor nich kennt udn anders herum.
Hatte mal so ein Problem:
Habe dann 2 header Dateien A und B erstellst und sie gegenseitig includiert.. weis aber nich mehr ob funktioniert hat:)