<?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[Problem mit Array von Zeigern]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe eine Klasse die ein Array mit Zeigern speichert. Dort werden über eine add-Methode neue Elemente hinzugefügt. Wenn ich jetzt debugge, so beinhaltet aber jeder index den selben Zeiger.</p>
<pre><code class="language-cpp">class ArrayPtr
{
   public:
     ArrayPtr()
     {
        for (int i = 0; i &lt; 128; i++)
          arr[i] = 0;
     }

     add(int index, MyObject* o)
     {
        arr[index] = o;
     }
   private:
     MyObject* arr[128];
}
</code></pre>
<p>Schaue ich mir das Array im Debugger an, so ist an jedem bereits hinzugefügtem Index der selbe Zeiger gespeichert. Aber warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/262706/problem-mit-array-von-zeigern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 11:09:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/262706.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Mar 2010 10:04:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:04:33 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich habe eine Klasse die ein Array mit Zeigern speichert. Dort werden über eine add-Methode neue Elemente hinzugefügt. Wenn ich jetzt debugge, so beinhaltet aber jeder index den selben Zeiger.</p>
<pre><code class="language-cpp">class ArrayPtr
{
   public:
     ArrayPtr()
     {
        for (int i = 0; i &lt; 128; i++)
          arr[i] = 0;
     }

     add(int index, MyObject* o)
     {
        arr[index] = o;
     }
   private:
     MyObject* arr[128];
}
</code></pre>
<p>Schaue ich mir das Array im Debugger an, so ist an jedem bereits hinzugefügtem Index der selbe Zeiger gespeichert. Aber warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1866884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866884</guid><dc:creator><![CDATA[Hummel3]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:04:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:07:02 GMT]]></title><description><![CDATA[<p>Mehr Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1866887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866887</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:07:02 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:12:46 GMT]]></title><description><![CDATA[<p>Sofern du mit nicht dem Zeiger der bei allen gleich ist den Nullzeiger meinst, ist aus deinem Code nicht ersichtlich, was der Fehler ist. Zeig mal mehr Code und/oder schau mal mit dem Debugger wann der Fehler zuerst auftritt.</p>
<p>P.S.: Du benutzt die magische Zahl 128. Du magst gute Gründe dafür haben, aber es gibt keinen Grund, dich selber so einzuschränken. Benutz einen zentral änderbaren Wert (Template-parameter, const int) und schon hast du mit einem Schlag eine viel universeller benutzbare Klasse, ohne dass du irgendwelche Nachteile für dein konkretes Problem mit der 128 hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1866888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866888</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:19:19 GMT]]></title><description><![CDATA[<p>Oder std::map&lt;int, MyObject*&gt;. <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/1866894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866894</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:23:07 GMT]]></title><description><![CDATA[<p>Es ist eine Menge Code, aber das hier sollte die wichtigsten Abschnitte abdecken und Funktionsweise erläutern.</p>
<pre><code class="language-cpp">class ArrayPtr
{
   public:
     ArrayPtr()
     {
        for (int i = 0; i &lt; 128; i++)
          arr[i] = 0;
     }

     add(int index, MyObject* o)
     {
        arr[index] = o;
     }
   private:
     MyObject* arr[128];
};

template &lt;class T&gt;
class MyQueue
{
   public:
     insert(const T&amp; t)
     {
        q.push(t);
     }

     T get()
     {
        return q.front();
     }

   private:
     Queue&lt;T&gt;
};

// Irgendwo werden Objekte erzeugt und in Queue gelegt
MyQueue&lt;MyObjetc*&gt; q;
q.insert(new MyObject());

// Von einer anderen Klasse entnommen und verarbeitet
MyQueue&lt;MyObjetc*&gt; mq = q;
ArrayPtr.add(mq.get()); // Alle Zeiger haben gleiche Adresse
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1866895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866895</guid><dc:creator><![CDATA[Hummel3]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:23:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:27:18 GMT]]></title><description><![CDATA[<p>Gibt es einen Grund, warum du nicht std::vector bzw. std::stack benutzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1866897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866897</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:27:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:36:49 GMT]]></title><description><![CDATA[<p>Ja da das Array eine Baumstruktur repräsentiert und viel mit den Indexen gearbeitet wird. Es ist da wesentlich komfortabler mit einem Zeiger-Array zu arbeiten anstatt mit einem stl::vector. Ich würde gerne die Struktur beibehalten, da sonst sehr viele Änderungen am Code erfolgen müssten...</p>
<p>Übergebe ich die Zeiger falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1866905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866905</guid><dc:creator><![CDATA[Hummel3]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:36:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:41:04 GMT]]></title><description><![CDATA[<p>Folgende Stelle</p>
<pre><code class="language-cpp">// Von einer anderen Klasse entnommen und verarbeitet
MyQueue&lt;MyObjetc*&gt; mq = q;
ArrayPtr.add(mq.get()); // Alle Zeiger haben gleiche Adresse
</code></pre>
<p>Das add(mq.get()) rufst du das dann zyklisch auf?!</p>
<p>Weil die get()-Methode ja front() von Queue aufruft (was ist das für ein Typ?) und vermutlich keine Elemente aus der Queue entfernt. Das heißt du bekommst immer das erste zurückgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1866907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866907</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:41:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:41:49 GMT]]></title><description><![CDATA[<p>Hummel3 schrieb:</p>
<blockquote>
<p>Ja da das Array eine Baumstruktur repräsentiert und viel mit den Indexen gearbeitet wird. Es ist da wesentlich komfortabler mit einem Zeiger-Array zu arbeiten anstatt mit einem stl::vector. Ich würde gerne die Struktur beibehalten, da sonst sehr viele Änderungen am Code erfolgen müssten...</p>
<p>Übergebe ich die Zeiger falsch?</p>
</blockquote>
<p>Bei deinem Code hast du zu viel verändert um da durchzusteigen. Aber mein Schlüsselwortdetektor springt gerade an: <em>Baumstruktur</em>, <em>Indexe</em>, <em>komfortabel</em>. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Du suchst std::map!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1866908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866908</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:41:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:43:40 GMT]]></title><description><![CDATA[<p>Vermutlich hast du sowas:</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; mq.size(); i++)
{
  ArrayPtr.add(i, mq.front());
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1866909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866909</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:43:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 10:59:12 GMT]]></title><description><![CDATA[<p>Ja der Aufruf erfolgt zyklisch. Der Index ist in MyObject enthalten. Leider habe ich vergessen ein pop() mit anzugeben, die Elemente werden also entfernt. Beim Debuggen kommen auch so wie es sein soll verschiedene Elemente aus der Queue heraus.</p>
<p>Ja map wäre eine Lösung, aber bevor ich das ausprobiere muss ich mir nochmal die Übergabe der Zeiger anschauen. Nicht dass ich umbaue und dann gehts immer noch nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Danke erstmal für eure Hilfe, ich werde das alles nochmal im Debug durchlaufen. Da läuft irgendwo etwas falsch. Da programmiert man solange rum und beim ersten Test läuft alles schief <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="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1866914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866914</guid><dc:creator><![CDATA[Hummel3]]></dc:creator><pubDate>Wed, 10 Mar 2010 10:59:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array von Zeigern on Wed, 10 Mar 2010 13:30:53 GMT]]></title><description><![CDATA[<p>So es läuft schon bereits eine Weile. Danke für eure Mühe, <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> war absolut falscher Alarm! Multithreading macht es einem nicht gerade einfach, und ein irgendwo gesetztes delete auch nicht... Also ein dummer Fehler meinerseits, ich muss echt aufpassen!</p>
<p>Wie kann ich den Zeiger global auf 0 setzten? So dass alle Verweise 0 sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1866988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1866988</guid><dc:creator><![CDATA[Hummel3]]></dc:creator><pubDate>Wed, 10 Mar 2010 13:30:53 GMT</pubDate></item></channel></rss>