TFrame bindet eigene Klasse, in eigener Klasse Zugriff auf TFrame?
-
Hi,
ich hab hier das Problem, wenn ich in meinem Frame meine Klasse einbinde (definiere meine Klasse als Memberobjekt), wenn ich nun im Header meiner Klasse den Header vom Frame einbinde motzt mir der Compiler den Instanznamen meiner Klasse an (im TFrame)
Wie kann ich den aus meiner Klasse heraus auf die Controls im Frame zugreifen? Normalerweise hätte ich es so gemacht, dass ich einfach den Zeiger vom jeweiligen Frame übergeben würde. Nur können sich scheinbar die Header nicht gegenseitig einbinden war eigentlich auch sinnvoll ist...
Gibt es eine andere Methode darauf zu zugreifen ohne die Basisklasse zu nehmen und im Code selbst dann auf mein TFrame zu casten?
Danke!
-
Hallo
Du darfst deine Includes nicht in einem Ring aufbauen (A included B, B included A). Die Fehlermeldung vom Compiler ist zugegebenermaßen nicht aussagekräftig.
Die Lösung deines Problems ist die Forward Deklaration :
// Header A #include "B.h" class A { B b; // Direkte Membervariable } // Header B class A; // Forward Deklaration, kein include! class B { A *a; // Hier dürfen nur Pointer auf A deklariert werden, keine Instanzen } // Implementation B #include "A.h" // Hier der eigentliche include // Ab hier kann A wie gewohnt verwendet werden
bis bald
akari
-
A wäre in dem Fall mein TFrame, B meine eigene Klasse, richtig?
€dit:
Juhu, geht!
Danke dir!
-
Maverick, das scheint aber kein gutes Design zu sein, daß der Frame deine Klasse besitzt und du in der Klasse wiederum auf die Frame-Elemente zugreifst.
Versuche möglichst hierarchisch zu programmieren...
-
Th69 schrieb:
Maverick, das scheint aber kein gutes Design zu sein, daß der Frame deine Klasse besitzt und du in der Klasse wiederum auf die Frame-Elemente zugreifst.
Versuche möglichst hierarchisch zu programmieren...Wie soll ich das den sonst machen? Der Code in meiner Klasse ist da um TCP/IP Packete (mit bestimmten Content) zu zerlegen und die entsprechenden Controls damit zu füllen.
Hauptsächlich gehts mir darum, dass ich den Framesource nicht mit Code aufzublähen der da nicht hingehört. Bis auf ein paar wenige Zeilen ist in meinem Frame nur der Code vorhanden der das Frame betrifft, alles andere ist sozusagen "ausgelagert". Leider ist die IDE da ohnehin schon recht unübersichtlich. Und dazu kommt auch, dass die Frames dynamisch angelegt werden.
Das es nicht ganz Ideal ist, ist mir durchaus bewusst - aber momentan gehts nicht anders und mir fällt mangels Erfahrung nix ein wie ich es "besser" machen kann. Deshalb mach ich es erstmal so und mit der Zeit kommen dann schon die Ideen wie es besser sein kann.