Probleme mit Parent Zeiger



  • Hallo,

    ich habe ein (Verständnis ?) Problem mit Parent Zeigern.

    Problemstellung:
    Eine MDI Anwendung, class TMDIForm.
    In der MDIForm ist ein Objekt der class A. Ich möchte jetzt in der Klasse einen Zeiger auf TMDIForm haben. Wenn ich jetzt aber in der Header Datei der class A einen Zeiger auf TMDIForm definiere und die Headerdatei dafür die TMDIForm inkludiere, schlägt vermutlich in der TMDIForm der include guard "falsch zu" und es gibt dort Probleme (class A wird dann nicht mehr gekannt).
    Ich habe eine Lösung mit einem void Pointer ausprobiert. Es klappt soweit, aber das ständige casten gefällt mir nicht?

    Ich arbeite mit dem BCB5.

    Wie mache ich das am besten? Ist das Design schon falsch, inkludiere ich falsch oder soll ich es mit dem void pointer machen?

    Gruß,

    Christian



  • Hallo

    Du darfst keinen Kreis in deinen Includes/Objectbeziehungen haben.
    Das ist weniger ein Problem der Include Guards. Das kannst du neben der Variante mit dem void-Zeiger noch durch Forward Declaration lösen, wie hier beschrieben.

    bis bald
    akari



  • Vielen Dank,

    aber was ist denn vom Design her sauberer? Oder wie kann man sowas überhaupt vermeiden, ist es ein Indiz das mein Klassendesign fehlerhaft ist?

    Wenn ich es mit void * mache, muss ich zur Zeit jedes mal wenn ich das Parent nutzen will in einer Methode, einen lokalen Zeiger auf das Parent anlegen und den void Zeiger dann casten. Geht das noch einfacher?

    Gruß,

    Christian



  • Hallo

    Sauberer, einfacher und auch effizienter von der Compilezeit ist die von mir verlinkte Forward Declaration.

    bis bald
    akari



  • Danke 🙂


Anmelden zum Antworten