<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Methode einer abgeleiteten Klasse aufrufen]]></title><description><![CDATA[<p>Hallo<br />
Ich habe eine Klasse die ungefähr so aussieht:</p>
<pre><code class="language-cpp">class Frame {
    private:
          int x, y, w, h;
    public:
          Frame(int X, int Y, int W, int H);
         ~Frame();

          void draw void() { 
              vector&lt;Frame&gt;::iterator it;
              for (it = next.begin(); it != next.end(); it++) {
                  (*it).draw();
              } 
          }
}
</code></pre>
<p>jetzt möchte ich hiervon beispielsweise eine Klasse Button oder Window ableiten und diese dann als Objekthierarchie darstellen.<br />
Dies will leider nicht so, wie ich es mir vorstelle.<br />
Es wird vom ersten Objekt aus die Funktion draw() der Superklasse aufgerufen.<br />
Diese ist allerdings eigentlich nur dazu gedacht, daß ich mich beim Erstellen der Objekte nicht noch um die Verwaltung der Objektstruktur kümmern muß.</p>
<p>Kann mir jemand erklären, wie ich nun also die draw() meiner abgeleiteten Klassen aufrufen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124901/methode-einer-abgeleiteten-klasse-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 03:33:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124901.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 01 Nov 2005 16:16:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Methode einer abgeleiteten Klasse aufrufen on Tue, 01 Nov 2005 16:16:18 GMT]]></title><description><![CDATA[<p>Hallo<br />
Ich habe eine Klasse die ungefähr so aussieht:</p>
<pre><code class="language-cpp">class Frame {
    private:
          int x, y, w, h;
    public:
          Frame(int X, int Y, int W, int H);
         ~Frame();

          void draw void() { 
              vector&lt;Frame&gt;::iterator it;
              for (it = next.begin(); it != next.end(); it++) {
                  (*it).draw();
              } 
          }
}
</code></pre>
<p>jetzt möchte ich hiervon beispielsweise eine Klasse Button oder Window ableiten und diese dann als Objekthierarchie darstellen.<br />
Dies will leider nicht so, wie ich es mir vorstelle.<br />
Es wird vom ersten Objekt aus die Funktion draw() der Superklasse aufgerufen.<br />
Diese ist allerdings eigentlich nur dazu gedacht, daß ich mich beim Erstellen der Objekte nicht noch um die Verwaltung der Objektstruktur kümmern muß.</p>
<p>Kann mir jemand erklären, wie ich nun also die draw() meiner abgeleiteten Klassen aufrufen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/905839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/905839</guid><dc:creator><![CDATA[Tec]]></dc:creator><pubDate>Tue, 01 Nov 2005 16:16:18 GMT</pubDate></item><item><title><![CDATA[Reply to Methode einer abgeleiteten Klasse aufrufen on Tue, 01 Nov 2005 16:23:56 GMT]]></title><description><![CDATA[<p>Ich sehe da keine abgeleiteten Klassen. next ist offenbar ein vector&lt;Frame&gt;, da sind Frame-Objekte drin, keine Objekte von abgeleiteten Klassen. Wenn du die Methode draw virtuell benutzen willst, brauchst du Zeiger oder Referenzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/905843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/905843</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 01 Nov 2005 16:23:56 GMT</pubDate></item><item><title><![CDATA[Reply to Methode einer abgeleiteten Klasse aufrufen on Tue, 01 Nov 2005 16:34:36 GMT]]></title><description><![CDATA[<p>also geht das GAnze nicht mit vektoren?</p>
<p>wozu hab ich dann die SDL?</p>
<p>ne Abgeleitete Klasse sähe so aus (nur damit du eine siehst..)</p>
<pre><code class="language-cpp">class Window : public Frame {
    public:
      void draw (void) {
          glBegin(..);
               ...
          gleEnd(); 
          // oder irgendsowas
          Frame::draw();
      }
};
</code></pre>
<p>meine class Frame sollte also am Ende so aussehen?</p>
<pre><code class="language-cpp">class Frame {
    private:
          int x, y, w, h;
          Frame *next;
          FRame *childs;
    public:
          Frame(int X, int Y, int W, int H);
         ~Frame();

          void draw void() { 
              vector&lt;Frame&gt;::iterator it;
              for (it = next.begin(); it != next.end(); it++) {
                  (*it).draw();
              } 
          }
};
</code></pre>
<p>und die Verwaltungsmethoden entsprechend die childs etc. dranhängen?<br />
Und wie ruf ich dann mein Ableitungsdraw auf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/905851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/905851</guid><dc:creator><![CDATA[Tec]]></dc:creator><pubDate>Tue, 01 Nov 2005 16:34:36 GMT</pubDate></item><item><title><![CDATA[Reply to Methode einer abgeleiteten Klasse aufrufen on Tue, 01 Nov 2005 16:59:17 GMT]]></title><description><![CDATA[<p>Bin mir nicht sicher ob ich dich verstehe, aber meinst du es so:</p>
<p>Widget<br />
|<br />
Button<br />
|<br />
PushButton</p>
<p>Zuerst wird PushButton.draw() aufgerufen, dies ruf Button.draw() auf, dies wiederum Widget.draw() usw.<br />
Meintest du das so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/905864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/905864</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 01 Nov 2005 16:59:17 GMT</pubDate></item><item><title><![CDATA[Reply to Methode einer abgeleiteten Klasse aufrufen on Tue, 01 Nov 2005 17:12:14 GMT]]></title><description><![CDATA[<p>genau. Wobei das Widget nach meiner hoffnung die Verwaltung für die objekthierarchie übernehmen soll</p>
]]></description><link>https://www.c-plusplus.net/forum/post/905879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/905879</guid><dc:creator><![CDATA[tec]]></dc:creator><pubDate>Tue, 01 Nov 2005 17:12:14 GMT</pubDate></item><item><title><![CDATA[Reply to Methode einer abgeleiteten Klasse aufrufen on Tue, 01 Nov 2005 17:14:52 GMT]]></title><description><![CDATA[<p>Informier dich mal über virtuelle Methoden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/905882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/905882</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 01 Nov 2005 17:14:52 GMT</pubDate></item><item><title><![CDATA[Reply to Methode einer abgeleiteten Klasse aufrufen on Tue, 01 Nov 2005 17:26:23 GMT]]></title><description><![CDATA[<p>Na dann könntest du es so wie unten machen. Man sollte übrigens von innen nach außen zeichnen, denn sonst sieht der User u.U. ein leeres Fenster, in das noch hineingezeichnet wird, bzw. die Widgets reinpoppen, wenn man das Fenster als letztes zeichnet, kann man sichergehen, dass vorher alles andere gezeichnet wurde.</p>
<pre><code class="language-cpp">struct Widget {
  virtual void draw() const = 0;
};

struct Button : public Widget {
  virtual void draw() const {
    //Zeichne Button Zeugs
  };
};

struct PushButton : public Button {
  virtual void draw() const {
    //Eigenen Müll darstellen
    Button::draw();  //Parent zeichnen
  };
};
</code></pre>
<p>EDIT: Vertippt und es heißt hier STL und nicht SDL. Die SDL ist ne Medienbibliothek</p>
]]></description><link>https://www.c-plusplus.net/forum/post/905886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/905886</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 01 Nov 2005 17:26:23 GMT</pubDate></item></channel></rss>