<?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[Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator]]></title><description><![CDATA[<p>Hallo,<br />
die folgende Klasse soll als Ansatz für das Observer-Pattern dienen (Andere Klassen sind von ihr abgelitten erben die Methode Notify():</p>
<pre><code class="language-cpp">#ifndef _OBSERVABLE_H
#define _OBSERVABLE_H
#include &lt;iostream&gt;
#include &lt;list&gt;
#include &quot;Observer.h&quot; //Meine eigene Observer-Klasse

class Observable {
  private:
    list&lt;Observer*&gt; observers;

  public:
    void notify()
    {
      list&lt;Observer*&gt;::iterator iter = observers.begin();
      while(iter != observers.end())
      {
        // Diese Schleife wird beim Aufruf von notify() ununterbrochen durchlaufen,
        // wenn &quot;list&lt;Observer*&gt; observers;&quot; wie oben deklariert ist.
        // Deklariere ich das aber hier:
        //list&lt;Observer*&gt; observers;
        // Dann läuft es. Allerdings habe ich dann immer eine leere Liste,
        // was natürlich keinen Sinn macht.

        std::cout &lt;&lt; &quot;Test&quot; &lt;&lt; endl;
        iter++;
      }
    }
};
#endif
</code></pre>
<p>Warum wird die Liste unendlich oft durchlaufen, wenn ich sie oben unter private deklariere? Ich habe ja nichtmal Methoden, mit dem ich ein Element eingefügt habe. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Ich hoffe, ihr habt einen Tipp für mich.<br />
Dankeschön!<br />
Andy</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218127/merkwürdiges-verhalten-beim-durchlaufen-einer-list-per-iterator</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 04:13:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218127.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Jul 2008 12:45:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 12:45:12 GMT]]></title><description><![CDATA[<p>Hallo,<br />
die folgende Klasse soll als Ansatz für das Observer-Pattern dienen (Andere Klassen sind von ihr abgelitten erben die Methode Notify():</p>
<pre><code class="language-cpp">#ifndef _OBSERVABLE_H
#define _OBSERVABLE_H
#include &lt;iostream&gt;
#include &lt;list&gt;
#include &quot;Observer.h&quot; //Meine eigene Observer-Klasse

class Observable {
  private:
    list&lt;Observer*&gt; observers;

  public:
    void notify()
    {
      list&lt;Observer*&gt;::iterator iter = observers.begin();
      while(iter != observers.end())
      {
        // Diese Schleife wird beim Aufruf von notify() ununterbrochen durchlaufen,
        // wenn &quot;list&lt;Observer*&gt; observers;&quot; wie oben deklariert ist.
        // Deklariere ich das aber hier:
        //list&lt;Observer*&gt; observers;
        // Dann läuft es. Allerdings habe ich dann immer eine leere Liste,
        // was natürlich keinen Sinn macht.

        std::cout &lt;&lt; &quot;Test&quot; &lt;&lt; endl;
        iter++;
      }
    }
};
#endif
</code></pre>
<p>Warum wird die Liste unendlich oft durchlaufen, wenn ich sie oben unter private deklariere? Ich habe ja nichtmal Methoden, mit dem ich ein Element eingefügt habe. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Ich hoffe, ihr habt einen Tipp für mich.<br />
Dankeschön!<br />
Andy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548217</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 12:45:12 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 12:50:12 GMT]]></title><description><![CDATA[<p>ich bin mir nicht ganz sicher aber sollte hier</p>
<pre><code class="language-cpp">list&lt;Observer*&gt;::iterator iter = observers.begin();
</code></pre>
<p>nicht ein</p>
<pre><code class="language-cpp">list&lt;Observer*&gt;::iterator iter = observers-&gt;begin();
</code></pre>
<p>stehen??Schließlich hast du ja zeiger auf deine Observer Klasse?Fals ich falsch liege berichtig mich bitte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548225</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 16 Jul 2008 12:50:12 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 12:53:16 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Falls ich falsch liege berichtig mich bitte.</p>
</blockquote>
<p>Das ist schon richtig so, schließlich ist observers selbst kein Zeiger, folgedessen nur ein observers.begin().</p>
<p>Der Fehler muss woanders liegen, hier sind noch alles gut aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548228</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 16 Jul 2008 12:53:16 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 12:53:27 GMT]]></title><description><![CDATA[<p>Hallo,<br />
danke für deine Antwort, aber &quot;observers&quot; habe ich nicht als Pointer deklariert. In der Liste selbst befinden sich Pointer auf andere Objekte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548229</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 12:53:27 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 12:56:45 GMT]]></title><description><![CDATA[<p>Aus welchem Namespace kommt die Liste denn? Wo kommt der Namespace her? Hast Du std im Header in den globalen Namespace importiert? Nicht gut!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548235</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 16 Jul 2008 12:56:45 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 12:58:01 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Firefighter schrieb:</p>
<blockquote>
<p>Falls ich falsch liege berichtig mich bitte.</p>
</blockquote>
<p>Das ist schon richtig so, schließlich ist observers selbst kein Zeiger, folgedessen nur ein observers.begin().</p>
<p>Der Fehler muss woanders liegen, hier sind noch alles gut aus.</p>
</blockquote>
<p>Ahh stimmt...natürlich, da hatte ich nicht aufgepasst. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548236</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 16 Jul 2008 12:58:01 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:05:53 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Aus welchem Namespace kommt die Liste denn? Wo kommt der Namespace her? Hast Du std im Header in den globalen Namespace importiert? Nicht gut!</p>
</blockquote>
<p>Ach das habe ich vergessen, dazu zu schreiben:</p>
<pre><code class="language-cpp">using namespace std;
</code></pre>
<p>habe ich noch vor meiner Klasse stehen...</p>
<p>Die Liste kommt aus std. Ist es gar nicht gut, im Header den Namespace zu importieren?</p>
<p>Ich habe es nochmal probiert, ohne std zu importieren, aber daran liegt es leider auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548239</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:05:03 GMT]]></title><description><![CDATA[<p>sunnyandy schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Aus welchem Namespace kommt die Liste denn? Wo kommt der Namespace her? Hast Du std im Header in den globalen Namespace importiert? Nicht gut!</p>
</blockquote>
<p>Ach das habe ich vergessen, dazu zu schreiben:</p>
<pre><code class="language-cpp">using namespace std;
</code></pre>
<p>habe ich noch vor meiner Klasse stehen...</p>
</blockquote>
<p>Das ist schlecht. Man sollte niemals nicht in einem Header irgendwelche namespaces in den globalen Scope importieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548246</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:08:21 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>sunnyandy schrieb:</p>
<blockquote>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Aus welchem Namespace kommt die Liste denn? Wo kommt der Namespace her? Hast Du std im Header in den globalen Namespace importiert? Nicht gut!</p>
</blockquote>
<p>Ach das habe ich vergessen, dazu zu schreiben:</p>
<pre><code class="language-cpp">using namespace std;
</code></pre>
<p>habe ich noch vor meiner Klasse stehen...</p>
</blockquote>
<p>Das ist schlecht. Man sollte niemals nicht in einem Header irgendwelche namespaces in den globalen Scope importieren.</p>
</blockquote>
<p>OK danke für deinen Tipp, leider hat es auch nicht funktioniert.<br />
Ich habe die &quot;observers&quot; eben mal als Pointer deklariert und im Konstruktor ein Objekt erzeugt, nur leider hat das auch nichs gebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548251</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:08:21 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:11:02 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Das ist schlecht. Man sollte niemals nicht in einem Header irgendwelche namespaces in den globalen Scope importieren.</p>
</blockquote>
<p>Korrekt und zwar weil:<br />
Du hebelst den Nutzen vom Namespace damit aus. Überall wo du den Header inkludierst, wird automatisch der entsprechende Namespace in den globalen Scope übertragen, was zu ungewollten Namenskonflikten führen kann, wovon der namespace ja eigentlich schützen sollte.</p>
<p>Das kann auch sehr ärgerlich für Leute sein, welche deine Bibliotheken nutzen wollen.</p>
<p>Man sollte sowieso so oft wie möglich auf <code>using namespace</code> verzichten. bei langen namespace Namen kann man auch sowas benutzen:</p>
<pre><code class="language-cpp">namespace xml = dsi::bliblablub::nochwas::xml;
</code></pre>
<p>so erreicht man das lange Ding direkt über den Namespace xml <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Zu deinem Problem, zeig mal etwas mehr Code. So viel kann ja nicht passieren in der while-Schleife.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548254</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:11:02 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:12:17 GMT]]></title><description><![CDATA[<p>Von dieser Klasse erbt übrigens eine Klasse, welche sich in einer SharedLibrary befindet. Kann das vielleicht mit irgendwelchen Speicherproblemen zusammenhängen?</p>
<p>Die Liste muss doch initialisiert worden sein, oder? Ansonsten kann die Test-Ausgabe doch nicht tausendmal auf meinem Monitor ausgegeben werden, richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548257</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:12:17 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:14:06 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Zu deinem Problem, zeig mal etwas mehr Code. So viel kann ja nicht passieren in der while-Schleife.</p>
<p>Grüssli</p>
</blockquote>
<p>Wenn die Liste leer ist, passiert gar nichts, weil er gar nicht in die Schleife rein gehen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548259</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:14:06 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:16:42 GMT]]></title><description><![CDATA[<p>[quote=&quot;Dravere&quot;]</p>
<p>Tachyon schrieb:</p>
<blockquote>
<p>Zu deinem Problem, zeig mal etwas mehr Code. So viel kann ja nicht passieren in der while-Schleife.<br />
Grüssli</p>
</blockquote>
<p>Aufgrund des Fehlers habe ich mittlerweile alles auskommentiert. In der while-Schleife passiert nicht mehr.<br />
Irgendwie scheint er die Liste nicht richtig zu erzeugen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548262</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:16:42 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:28:01 GMT]]></title><description><![CDATA[<p>Was für einen Compiler benutzt Du denn?</p>
<p>Schmeiss mal das <code>#include &quot;Observer.h&quot;</code> raus und ersetzte es durch <code>struct Observer{};</code> .</p>
<p>PS: Natürlich nur zum Testen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548267</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:28:01 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:31:11 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Wenn die Liste leer ist, passiert gar nichts, weil er gar nicht in die Schleife rein gehen sollte.</p>
</blockquote>
<p>a) Die Liste ist nicht leer. Sonst würde die Endlosschleife nicht starten!<br />
b) Eine Endlosschleife kann dann nur dadurch passieren, dass in der While-Schleife ein Problem ist.<br />
c) Dass die Liste Elemente aufweist, obwohl sie leer sein sollte, ist natürlich noch ein weiteres Problem, auf welches ich aber erst als zweites geschaut hätte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548278</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:31:11 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:34:23 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich konnte es leider nicht durch ein struct ersetzen, da der Compiler gemeckert hat, dass der Name bereits an anderer Stelle als Klasse auftaucht.<br />
Ich habe die Header-Datei &quot;Observer.h&quot; rausgeschmissen, die<br />
List&lt;Observer*&gt; in<br />
List&lt;int*&gt;<br />
umgewandelt (Zum Testen) und habe immer noch das gleiche Problem.</p>
<p>ich benutze den GNU g++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548282</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:34:23 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:33:37 GMT]]></title><description><![CDATA[<p>Ich glaube eher, dass er nicht die Liste benutzt, von der er denkt, dass er sie benutzt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548283</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:33:37 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:34:22 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Ich glaube eher, dass er nicht die Liste benutzt, von der er denkt, dass er sie benutzt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Zeige mal den Code für die int* Liste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548284</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:34:22 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:40:35 GMT]]></title><description><![CDATA[<p>OK, mittlerweile sieht es so aus (Hatte aus der Liste vorhin Pointer gemacht).</p>
<pre><code class="language-cpp">#ifndef _OBSERVABLE_H
#define _OBSERVABLE_H

#include &lt;iostream&gt;
#include &lt;list&gt;

class Observable {

 private:
  std::list&lt;int*&gt; *observers;

 protected:
  Observable()
    {
      observers = new std::list&lt;int*&gt;;
    }

 public:

  void notify(void *obj) {

    std::list&lt;int*&gt;::iterator iter = observers-&gt;begin();
    int i = 0;
    while (iter != observers-&gt;end()) {      
      std::cout &lt;&lt; &quot;OOO_ESTI &quot; &lt;&lt; i++ &lt;&lt; std::endl;
      iter++;
    }
  }   

};
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1548289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548289</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:40:35 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:47:29 GMT]]></title><description><![CDATA[<p>Wie legst Du denn Observable-Objekte an, wenn der Ctor protected ist?<br />
Falls Du von dem Ding erbst:<br />
Probier Observable.notify() lieber erstmal direkt in der main aus, ohne über die erbende Klasse zu gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548294</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:58:22 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Wie legst Du denn Observable-Objekte an, wenn der Ctor protected ist?<br />
Falls Du von dem Ding erbst:<br />
Probier Observable.notify() lieber erstmal direkt in der main aus, ohne über die erbende Klasse zu gehen.</p>
</blockquote>
<p>Genau, ich geh momentan über die erbende Klasse. Ich habe die header-Datei in einem einfachen Testprogramm eingebunden und dort hat es eben funktioniert (aus der main aufgerufen, wie du es sagst).</p>
<p>Wenn ich hier die Anzahl der Elemente ausgeben will, kommt das Programm zum <strong>Stillstand</strong> (das ist merkwürdig, oder?):</p>
<pre><code class="language-cpp">while (iter != observers-&gt;end()) {      
      std::cout &lt;&lt; &quot;OOO_ESTI &quot; &lt;&lt; observers-&gt;size() &lt;&lt; std::endl;
      iter++;
    }
</code></pre>
<p>Der Konstruktor der Klasse, die von Observable erbt, sieht so aus:</p>
<pre><code class="language-cpp">MapModel::MapModel(): Observable(){

}
</code></pre>
<p>Das habe ich doch richtig gemacht, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548298</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:58:22 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 13:58:43 GMT]]></title><description><![CDATA[<p>Wie wird denn notify in der erbenden Klasse aufgerufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548306</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 16 Jul 2008 13:58:43 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 14:01:31 GMT]]></title><description><![CDATA[<p>Die wird folgendermaßen aufgerufen:</p>
<pre><code class="language-cpp">void MapModel::loadMapFile(char *filename)
{
  ...
  notify(NULL);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1548307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548307</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 14:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 14:03:58 GMT]]></title><description><![CDATA[<p>Und MapModel hat nicht zufällig noch ein eigenes notify? Ich würde mal einen Debugger bemühen und gucken, was da genau aufgerufen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548310</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 16 Jul 2008 14:03:58 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 14:08:12 GMT]]></title><description><![CDATA[<p>Wie kann ich denn in C++ explizit eine Methode der Oberklasse aufrufen?<br />
Sowas wie &quot;inherited notify&quot; in Delphi z.B. (Geht das überhaupt aufgrund der Mehrfachvererbung?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1548315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548315</guid><dc:creator><![CDATA[sunnyandy]]></dc:creator><pubDate>Wed, 16 Jul 2008 14:08:12 GMT</pubDate></item><item><title><![CDATA[Reply to Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator on Wed, 16 Jul 2008 14:18:05 GMT]]></title><description><![CDATA[<p>sunnyandy schrieb:</p>
<blockquote>
<p>Wie kann ich denn in C++ explizit eine Methode der Oberklasse aufrufen?<br />
Sowas wie &quot;inherited notify&quot; in Delphi z.B. (Geht das überhaupt aufgrund der Mehrfachvererbung?)</p>
</blockquote>
<p>So:</p>
<pre><code class="language-cpp">struct Base
{
   void function(){}
};

struct Derived : Base
{
   void function(){}
};

Derived derivedObject;
derivedObject.Base::function();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1548320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1548320</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 16 Jul 2008 14:18:05 GMT</pubDate></item></channel></rss>