<?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[[Gelöst] Hinzufügen eines Eintrages zu einer verketteten Liste]]></title><description><![CDATA[<p>Hey Community.</p>
<p>Ich arbeite schon seit einiger Zeit an einer Modifikation für einen 2D-Shooter namens Teeworlds. In dieser soll dem Spieler ein Inventar zur Verfügung gestellt werden. Dieses programmiere ich derzeit. Es besteht aus zwei Klassen, welche ungefähr so aussehen (unwichtige Teile habe ich weggelassen):</p>
<pre><code class="language-cpp">class INVENTORY {
 class INVENTORYITEM *item_first;

 class INVENTORYITEM* lastItem();
};

class INVENTORYITEM {
 class INVENTORYITEM *item_next;
};

INVENTORYITEM* INVENTORY::lastItem() {
 INVENTORYITEM *item = this-&gt;item_first;
 while (item != NULL) { // Hier tritt der unten gepostete Fehler auf
  item = item-&gt;item_next;
 }
 return item;
}
</code></pre>
<p>So rufe ich die lastItem()-Methode auf:</p>
<pre><code class="language-cpp">INVENTORYITEM *new_item = new INVENTORYITEM;
new_item-&gt;... = ... // Einige Eigenschaften definieren
inventory.lastItem()-&gt;item_next = new_item;
</code></pre>
<p>Irgendwo liegt hier der Hund begraben, aber ich finde ihn einfach nicht. Die genaue Fehlermeldung lautet:</p>
<blockquote>
<p>Zugriffsverletzung beim Lesen an Position 0x...</p>
</blockquote>
<p>Weiß jemand von euch näheres dazu bzw. hat jemand einen Lösungsansatz?<br />
Würde mich über Antworten freuen. <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>
<p>Lg,<br />
-haiyyu</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264190/gelöst-hinzufügen-eines-eintrages-zu-einer-verketteten-liste</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 04:59:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264190.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 Apr 2010 20:15:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Gelöst] Hinzufügen eines Eintrages zu einer verketteten Liste on Sat, 03 Apr 2010 20:36:09 GMT]]></title><description><![CDATA[<p>Hey Community.</p>
<p>Ich arbeite schon seit einiger Zeit an einer Modifikation für einen 2D-Shooter namens Teeworlds. In dieser soll dem Spieler ein Inventar zur Verfügung gestellt werden. Dieses programmiere ich derzeit. Es besteht aus zwei Klassen, welche ungefähr so aussehen (unwichtige Teile habe ich weggelassen):</p>
<pre><code class="language-cpp">class INVENTORY {
 class INVENTORYITEM *item_first;

 class INVENTORYITEM* lastItem();
};

class INVENTORYITEM {
 class INVENTORYITEM *item_next;
};

INVENTORYITEM* INVENTORY::lastItem() {
 INVENTORYITEM *item = this-&gt;item_first;
 while (item != NULL) { // Hier tritt der unten gepostete Fehler auf
  item = item-&gt;item_next;
 }
 return item;
}
</code></pre>
<p>So rufe ich die lastItem()-Methode auf:</p>
<pre><code class="language-cpp">INVENTORYITEM *new_item = new INVENTORYITEM;
new_item-&gt;... = ... // Einige Eigenschaften definieren
inventory.lastItem()-&gt;item_next = new_item;
</code></pre>
<p>Irgendwo liegt hier der Hund begraben, aber ich finde ihn einfach nicht. Die genaue Fehlermeldung lautet:</p>
<blockquote>
<p>Zugriffsverletzung beim Lesen an Position 0x...</p>
</blockquote>
<p>Weiß jemand von euch näheres dazu bzw. hat jemand einen Lösungsansatz?<br />
Würde mich über Antworten freuen. <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>
<p>Lg,<br />
-haiyyu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877290</guid><dc:creator><![CDATA[haiyyu]]></dc:creator><pubDate>Sat, 03 Apr 2010 20:36:09 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Hinzufügen eines Eintrages zu einer verketteten Liste on Sat, 03 Apr 2010 20:16:51 GMT]]></title><description><![CDATA[<p>Warum benutzt du nicht einfach std::list? Und du benutzt extrem häßliche Bezeichnet... aber das ist wohl Geschmackssache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877292</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Sat, 03 Apr 2010 20:16:51 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Hinzufügen eines Eintrages zu einer verketteten Liste on Sat, 03 Apr 2010 20:27:43 GMT]]></title><description><![CDATA[<p>Reine Großschreibung von Bezeichnern nehmen die meisten nur für Macros und Konstanten. Bei Klassen eher unüblich.</p>
<p>Das Problem: Du brauchst einen Konstruktor! In dem setzt du item_first auf NULL.<br />
Oder du initialisierst es gleich korrekt.</p>
<p>Kann es sein dass du von C her kommst? Die ganzen &quot;class&quot; vor den Typen der Member oder Rückgabetypen braucht es nicht. Im Prinzip würde das reichen:</p>
<pre><code class="language-cpp">class Inventory {
 InventoryItem* item_first;

 InventoryItem* lastItem();
};

class Inventory {
 InventoryItem* item_next;
};
</code></pre>
<p>Aber prinzipiell sollte ein Blick in Richtung std::list nicht schaden, wie Janjan schon geschrieben hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877299</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Sat, 03 Apr 2010 20:27:43 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Hinzufügen eines Eintrages zu einer verketteten Liste on Sat, 03 Apr 2010 20:38:48 GMT]]></title><description><![CDATA[<p>Hey.</p>
<p>Vielen Dank für die schnelle Hilfe. <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="🙂"
    /><br />
Ich ging davon aus, dass Zeigern, denen nichts zugewiesen wurde, gleich NULL sind.<br />
Aber das war dann ja wohl Quatsch.</p>
<p>std::list werde ich mir mal anschauen und bei der nächsten Gelegenheit ausprobieren/mein Inventar-System umbauen.</p>
<p>Und ja, ich habe mit C angefangen. <sup>-</sup></p>
<p>#edit<br />
@ Janjan: War das mit den Bezeichnern auf die Großschreibung von Klassennamen bezogen oder meintest du etwas anderes damit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877303</guid><dc:creator><![CDATA[haiyyu]]></dc:creator><pubDate>Sat, 03 Apr 2010 20:38:48 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Hinzufügen eines Eintrages zu einer verketteten Liste on Sat, 03 Apr 2010 21:15:29 GMT]]></title><description><![CDATA[<p>haiyyu schrieb:</p>
<blockquote>
<p>#edit<br />
@ Janjan: War das mit den Bezeichnern auf die Großschreibung von Klassennamen bezogen oder meintest du etwas anderes damit?</p>
</blockquote>
<p>Ja, das wird er damit gemeint haben. Nenn deine Klasse anstatt INVENTORY lieber Inventory.</p>
<p>Großschreibung wird nur für Makros und Konstanten eingesetzt:</p>
<pre><code class="language-cpp">// Konstante
const FLOAT PI = 3.1415;

// Makro
#define ADD2(x, y) (x + y)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1877318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877318</guid><dc:creator><![CDATA[ghjghj]]></dc:creator><pubDate>Sat, 03 Apr 2010 21:15:29 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Hinzufügen eines Eintrages zu einer verketteten Liste on Sat, 03 Apr 2010 21:16:20 GMT]]></title><description><![CDATA[<p>ghjghj schrieb:</p>
<blockquote>
<p>haiyyu schrieb:</p>
<blockquote>
<p>#edit<br />
@ Janjan: War das mit den Bezeichnern auf die Großschreibung von Klassennamen bezogen oder meintest du etwas anderes damit?</p>
</blockquote>
<p>Ja, das wird er damit gemeint haben. Nenn deine Klasse anstatt INVENTORY lieber Inventory.</p>
<p>Großschreibung wird nur für Makros und Konstanten eingesetzt:</p>
<pre><code class="language-cpp">// Konstante
const FLOAT PI = 3.1415;

// Makro
#define ADD2(x, y) (x + y)
</code></pre>
</blockquote>
<p>float natürlich klein, sorry.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877319</guid><dc:creator><![CDATA[ghjghj]]></dc:creator><pubDate>Sat, 03 Apr 2010 21:16:20 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Hinzufügen eines Eintrages zu einer verketteten Liste on Sat, 03 Apr 2010 21:27:50 GMT]]></title><description><![CDATA[<p>haiyyu schrieb:</p>
<blockquote>
<pre><code class="language-cpp">INVENTORYITEM* INVENTORY::lastItem() {
 INVENTORYITEM *item = this-&gt;item_first;
 while (item != NULL) { // Hier tritt der unten gepostete Fehler auf
  item = item-&gt;item_next;
 }
 return item;
}
</code></pre>
</blockquote>
<p>Hier ist der Rückgabewert immer NULL. Die korrekte Schleifenbedingung wäre while(item-&gt;item_next != NULL), dabei muss man nur vorher noch prüfen, ob item_first ungleich NULL ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877322</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sat, 03 Apr 2010 21:27:50 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Hinzufügen eines Eintrages zu einer verketteten Liste on Sat, 03 Apr 2010 21:38:49 GMT]]></title><description><![CDATA[<p>Hey.</p>
<p>@ghjghj: Okay, werde mir die andere Schreibweise angewöhnen. 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>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16077">@ipsec</a>: Stimmt, kleiner Denkfehler meinerseits. :3</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877325</guid><dc:creator><![CDATA[haiyyu]]></dc:creator><pubDate>Sat, 03 Apr 2010 21:38:49 GMT</pubDate></item></channel></rss>