Objekte in Objekt
-
Hey Leute,
ich möchte gern eine eigene GUI schreiben und stehe nun vor dem Problem wie es möglich ist ein Object einem anderen unter zu ordnen. Ich hab schon im Web gesucht aber nicht wirklich was Passendes gefunden.
Ich möchte also meine Erzeugten Klassen (z.B.:Desktop,Window,Button)einander unterorden, sodass ich sie dann, wenn ich sie in verkettete Listen speichern und nacheinander abfragen/zeichnen kann.
Ich glaube, das sähe dann in etwa so aus: Desktop.Window.Button.Text='OK'Doch wie bekomm ich so eine hirachische Anordnung von Objekten hin?
Vielen Dank schonmal XD
mfg
Stephan
-
indem du das eine Objekt als Member von nem anderen machst?
Du solltest dir Vererbung und Ableiten mal anschauen.
PS: bevor du eine GUI programmierst, solltest du erst mal C++ lernen

-
Du koenntest eine Basisklasse definieren, die eine Methode paint() definiert, und darin fuer alle eventuell vorhandenen untergeordneten Objekte diesselbe Methode aufruft:
class AbstactGUIItem { public: virtual void paint() const = 0; }; class Window: public AbstractGUIItem { private: std::vector<AbstractGUIItem*> subobjects; public: void addsubobject(AbstractGUIItem* newsubobject) { subobjects.push_back(newsubobject); } virtual void paint() const { //Fenster zeichnen... for ( std::vector<AbstractGUIItem*>::iterator iter = subobjects.begin(); iter != subobjets.end(); ++iter) { (*iter)->paint(); } //paint fuer alle subobjekte } }; class Button: public AbstractGUIItem { public: virtual void paint() const { //Button Zeichnen } }; int main() { AbstractGUIItem* w = new Window(); AbstractGUIItem* a = new Button(); AbstractGUIItem* b = new Button(); w->addsubobject(a); w->addsubobject(b); w->paint(); delete a; delete b; delete w; }Ich weiss dass das mit der Speicherverwaltung n kleiner Horror ist was ich da angestellt habe, sollte nur das Kompositions Pattern zeigen

-
Cool, much thx, das war alles was ich wissen wollte. >Member< ist der Schlüssel zum Erfolg. XD
Ist richtig. So lange befasse ich mich noch nich mit C++ aber damit ich es richtig lerne brauche ich ein Großes Projekt. Wird mir sonst zu langweilig. Bei den anderen Sprachen, die ich gelernt habe hat das auch so geklappt. XD