Probleme mit Klassen und Pointer
-
Hallo
Ich habe in einer klasse ein Array.
Jetz ruft diese Klasse eine unterklasse auf (Dialogfeld über Create, also eine Pointer klasse).Wie komm ich von der Kindesklasse wieder auf die Parentklasse (um eine funktion aufzurufen)?
Natürlich habe ich versucht den Pointer der Parentklasse zu übergeben, wegen der Headereinbindung kamen aber nur Fehler... (die haben sich gegenseitig eingebunden)Habs so versucht:
((CUser*)m_pWnd)->OnFunktion();
Aber das klappt nicht weil ich auf CUser kein Zugriff habe, weil CUser Header bereits die "this" Klasse einbindet etc...Falls ihr eine Lösung habt schreibt mir diese bitte.
Danke!
-
Dann musst du die Klasse als forward definieren.
class xy;
und die Header in der CPP includen.
Solltest du damit Probleme haben dann schreiben und ich verschiebe dich nach C++ da dies ein Grundlagenproblem ist.
-
Ja sorry bitte verschieben.
Was ist den Forward?Also die Klasse ist so definiert:
Paren: class CUser
Child: class CWndow : CDialogParent muss ja die Child klasse aufnehmen. Da ich mehrere Dialogfelder haben will, speicher ich alles in eine Struktur (Array) und die eigentliche klasse als Pointer.
Nun kann ich problemlos die von Parent auf Child zugreifen. Ich kann auch Variablen übergeben. Das problem ist leider nur das ich eine Structur übergeben will die IN Parent ist, und Child garnicht weiß das die exestiert...
Wenn ich die Header Datei in der CPP includiere, ist mir die Struktur zwar bekannt, aber das bringt mir ja nix, weil ich keine Funktion ala "SetStruct(mystruct *d)" in die entsprechene Header schreiben kann (weil die in der Header ja immernoch nicht bekannt...
Also egal was ich mache, irgendein Teil weiß nicht das es die struktur gibt...
Zur Paxis:
Ich habe ne Usertabelle und jedesmal wenn ich auf ein User klicke soll sich das Fenster öffnen, aber halt nur 1x pro user. Wenn sich das Fenster schließt soll eine Nachricht gesendet werden das dieses fenster nun geschlossen wurde.
-
öhm wenn du eine FKT in einer anderen Klasse aufrufen willst kannst du auch den Header der anderen Klasse einbinden und dann einfach
CAndereKlasse test; test.aufzurufendeFKT();
machen
-
Kannst du die Struktur nicht im Child deklarieren und im Parent nur nutzen?
@Polofreak: Gerade das geht ja nicht. Ich nenne sowas Ringinclude, gibts da auch nen richtigen Namen?
Du kannst nicht in A.h B.h includen und umgekehrt. Dann meckert er, probier es mal aus.
-
Naja die ganze Parent Klasse ist ja gerade um diese Struktur aufgebaut. Sonst kann ich ja direkt alles in der CMainDLG schreiben aber das finde ich absolut unsauber.
-
Hmm, dann haben wir unterschiedliche Ansichten von "sauber".
Ich habe gelernt, Dinge dort zu deklarieren, wo sie in der untersten Ebene benötigt werden.
Zur Not lager die Struktur in eine weitere Headerdatei aus, die kannst du dann wohl beruhigt in beiden Klassen includen.
-
Ich hab jetz eine Lösung gefunden (nur noch nicht getestet)
Bei mir musste ja nur eine Bool Variable umgeändert werden... deshalb hab ich einfach nur die variable referenz übergeben... Komisch das ich nicht vorher drauf gekommen bin... *g*Ich habe ja eine Klasse CUser und CFenster - Warum die beiden dann zusammenfügen? Also ich wollte es schon getrennt haben...
-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.