wxWidgets - zirkuläre Abhängigkeit



  • Hi,

    ich bin noch recht neu in C++.

    Ich möchte eine wxWidgets-Anwendung erstellen, hab da aber ein Problem:

    ich habe eine sog. "zirkuläre Abhängigkeit" geschaffen, weis aber nicht wie ich sie beheben kann.

    Die wxWidgets-Application hat eine wxFrame.
    Dieser Frame geb ich einen Pointer zur Application mit, damit sie auf Methoden der Application zugreifen kann. Gleichzeitig muss die Application später auf Methoden der Frame zugreifen.

    In der Application.h hab ich

    #include "MainFrame.h"
    

    stehn, in der MainFrame.h

    #include "Application.h"
    

    Wie kann man diese Abhängigkeit auflösen? Ist das überhaupt möglich?
    Wie kann ich in der Frame auf Methoden der aufrufenden Klasse zugreifen?

    Gruß



  • Das nennt man "Forward declaration".

    in der Application.h
    schreibst du anstatt

    #include "MainFrame.h"
    

    einfach

    class MainFrame;
    

    geht natürlich nur wenn in der Application.h nur Zeiger auf MainFrame benutzt werden. Folgendes geht nicht:

    MainFrame  m_mainframe;
    

    sondern nur das:

    MainFrame  *m_mainframe;
    

    fallst du in der Application.cpp auf MainFrame zugreifst musst du in der Application.cpp das include machen

    #include "Application.h"
    #include "MainFrame.h"
    


  • Hi,

    danke für die Antwort.

    Aber dann kann ich in der Application ja immernoch nicht auf Methoden von MainFrame zugreifen, da sie ja nicht bekannt sind, oder?

    Gruß



  • Du musst dann natürlich in deiner cpp-Datei den fehlenden Header inkludieren. Dann kennst du auch die Methoden. Im Header selber wirst du ja kaum die Implementierung schreiben?


Log in to reply