Gegenseitiges Einbinden zweier header-Dateien notwendig

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Gegenseitiges Einbinden zweier header-Dateien notwendig

Beitrag von listeman »

Hallo

Nachdem mein vorheriges Problem (öffnen eines zweiten Fenster aus einer Qt-Anwendung) ganz einfach gelöst werden konnte (hätte auf die Lösung eig selbst kommen müssen^^), stellt sich jetzt ein neues Problem:

Wenn ich im zweiten Fenster auf OK klicke wird eine Datei aktualisiert. Daraufhin möchte ich im Hauptfenster eine Funktion ausführen.

Das Problem, das sich dabei stellt, ist, dass ich dafür die Header-Dateien gegenseitig einbinden müsste (was aus logischen Gründen nicht geht):
Die h-Datei des zweiten Fensters im Hauptfenster, um das zweite Fenster aus dem Hauptfenster öffnen zu können.
Die h-Datei des Hauptfenster im zweiten Fenster, um aus dem zweiten Fenster eine Funktion des Hauptfensters ausführen.

So ist das nicht möglich, aber ich bin mir sicher, dass es da eine andere Möglichkeit gibt - aber welche?

Bin für jede Hilfe dankbar!

Grüße
listeman
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Abgesehen davon dass der Dialog eigentlich nichs über das Hauptfenster wissen muss und seine Daten eher per get funktion zur Verfügung stellen sollte gibts dazu das Stichwort 'Vorwärtsdeklaration'.

Aber das hat alles nichts mit Qt zu tun und steht im C++ Einsteigerbuch in den ersten paar Kapiteln.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag von NoRulez »

Ich weiß, ist zwar Off-topic, jedoch würde ich mir die Strategie nochmals überlegen, den dann kann etwas nicht stimmen wenn man in 2 oder mehr Headerdateien die jeweils anderen benötigt.
In Qt selbst kann man diese Problematik eventuell mit Signals/Slots lösen, ...

In dem Fall könntest Du beispielsweise ein Signal emitten, das die Daten schon beinhaltet oder auch nicht.
Weiters wäre auch denkbar das Du das Fenster erst dann zerstörst, wenn Du die Daten abgeholt hast. (Wie Christian81 schon sagte eventuell mit einer Methode getData() oder ähnliches)
LG NoRulez
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

jedoch würde ich mir die Strategie nochmals überlegen, den dann kann etwas nicht stimmen wenn man in 2 oder mehr Headerdateien die jeweils anderen benötigt.
In Core C++ kommt das schon ab und an mal vor.
z.b. Elemente die Listen von Elementen (selben typ wie selbst) .... und der List-container braucht ne eigene schnittstelle, iss also kein reines template.

Aufloesen kann man sowas eigentlich mit Interfaces, also ner noch strengeren trennung zwischen Schnittstelle und Impl. Aber oftmals will man das auch ned aus performancetechnischen gruenden (vererbung vermeiden).

Prinzipiell sollt man sich grundsätzlich angewoehnen zu forwarden. es macht sehr wenig sinn, zu includen wenn mans ned wirklich braucht , und oftmals isses halt auch schaedlich ....

Ciao ...
Antworten