<?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[Verkette Liste hat ein Problem]]></title><description><![CDATA[<p>Hallo!<br />
ich baue gerade eine verkettete Liste, nur leider stürzt das Programm mit der klassischen Win-Fehlermeldung ab, der Compiler/Linker sagt nichts.<br />
Der Code:</p>
<p>element.h (Kontainer-Klasse)</p>
<pre><code class="language-cpp">#ifndef ELEMENT_H
#define ELEMENT_H

template &lt;class T&gt;
class Element {

private:
	T value;
	Element&lt;T&gt; *next;

public:
	Element() { }
	~Element() {
		delete next;
	}
	Element(T&amp; t);
	Element&lt;T&gt; *Append(T&amp;);

};

template &lt;class T&gt;
Element&lt;T&gt;::Element(T&amp; t) {
	next = new Element&lt;T&gt;;
}

template &lt;class T&gt;
Element&lt;T&gt;* Element&lt;T&gt;::Append(T &amp;t) {
	if(next)
		next = next-&gt;Append(t);
	else
		value = t;
	return this;
}

#endif
</code></pre>
<p>liste.h (die eigentliche Liste)</p>
<pre><code class="language-cpp">#ifndef LISTE_H
#define LISTE_H

template &lt;class T&gt;
class Liste {

private:
	Element&lt;T&gt; *pointer;

public:
	Liste();
	~Liste();
	void push_back(T&amp;);

};

template &lt;class T&gt;
Liste&lt;T&gt;::Liste() {
	std::cout &lt;&lt; &quot;Liste geladen&quot; &lt;&lt; std::endl;
	pointer = new Element&lt;T&gt;;
}

template &lt;class T&gt;
void Liste&lt;T&gt;::push_back(T&amp; t) {
	pointer-&gt;Append(t);
}

template &lt;class T&gt;
Liste&lt;T&gt;::~Liste() {
	delete pointer;
}

#endif
</code></pre>
<p>Der Absturz erfolgt im Hauptprogramm durch den Konstruktoraufruf der Liste, z.B.</p>
<pre><code class="language-cpp">Liste&lt;int&gt; liste1;
</code></pre>
<p>Woran kann das liegen? Ich tippe mal auf Speicherverletzung, aber wo?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/239772/verkette-liste-hat-ein-problem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 08:00:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/239772.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Apr 2009 19:29:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verkette Liste hat ein Problem on Mon, 27 Apr 2009 19:29:31 GMT]]></title><description><![CDATA[<p>Hallo!<br />
ich baue gerade eine verkettete Liste, nur leider stürzt das Programm mit der klassischen Win-Fehlermeldung ab, der Compiler/Linker sagt nichts.<br />
Der Code:</p>
<p>element.h (Kontainer-Klasse)</p>
<pre><code class="language-cpp">#ifndef ELEMENT_H
#define ELEMENT_H

template &lt;class T&gt;
class Element {

private:
	T value;
	Element&lt;T&gt; *next;

public:
	Element() { }
	~Element() {
		delete next;
	}
	Element(T&amp; t);
	Element&lt;T&gt; *Append(T&amp;);

};

template &lt;class T&gt;
Element&lt;T&gt;::Element(T&amp; t) {
	next = new Element&lt;T&gt;;
}

template &lt;class T&gt;
Element&lt;T&gt;* Element&lt;T&gt;::Append(T &amp;t) {
	if(next)
		next = next-&gt;Append(t);
	else
		value = t;
	return this;
}

#endif
</code></pre>
<p>liste.h (die eigentliche Liste)</p>
<pre><code class="language-cpp">#ifndef LISTE_H
#define LISTE_H

template &lt;class T&gt;
class Liste {

private:
	Element&lt;T&gt; *pointer;

public:
	Liste();
	~Liste();
	void push_back(T&amp;);

};

template &lt;class T&gt;
Liste&lt;T&gt;::Liste() {
	std::cout &lt;&lt; &quot;Liste geladen&quot; &lt;&lt; std::endl;
	pointer = new Element&lt;T&gt;;
}

template &lt;class T&gt;
void Liste&lt;T&gt;::push_back(T&amp; t) {
	pointer-&gt;Append(t);
}

template &lt;class T&gt;
Liste&lt;T&gt;::~Liste() {
	delete pointer;
}

#endif
</code></pre>
<p>Der Absturz erfolgt im Hauptprogramm durch den Konstruktoraufruf der Liste, z.B.</p>
<pre><code class="language-cpp">Liste&lt;int&gt; liste1;
</code></pre>
<p>Woran kann das liegen? Ich tippe mal auf Speicherverletzung, aber wo?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702252</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Mon, 27 Apr 2009 19:29:31 GMT</pubDate></item><item><title><![CDATA[Reply to Verkette Liste hat ein Problem on Mon, 27 Apr 2009 19:37:01 GMT]]></title><description><![CDATA[<p>Ad aCTa schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Liste&lt;int&gt; liste1;
</code></pre>
<p>Woran kann das liegen? Ich tippe mal auf Speicherverletzung, aber wo?</p>
</blockquote>
<p>Weil Du in Zeile 21-24 von element.h einen recurvise aufgerufen Constructor hast, ohne Abbruchbedingung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702258</guid><dc:creator><![CDATA[hartmut1164]]></dc:creator><pubDate>Mon, 27 Apr 2009 19:37:01 GMT</pubDate></item><item><title><![CDATA[Reply to Verkette Liste hat ein Problem on Mon, 27 Apr 2009 19:40:45 GMT]]></title><description><![CDATA[<p>hartmut1164 schrieb:</p>
<blockquote>
<p>Ad aCTa schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Liste&lt;int&gt; liste1;
</code></pre>
<p>Woran kann das liegen? Ich tippe mal auf Speicherverletzung, aber wo?</p>
</blockquote>
<p>Weil Du in Zeile 21-24 von element.h einen recurvise aufgerufen Constructor hast, ohne Abbruchbedingung.</p>
</blockquote>
<p>Wieso denn? Ich rufe doch konkret in Z 21-24 nur den Standart-Konstruktor auf, der wiederrum nichts macht:</p>
<pre><code class="language-cpp">Element() { }
</code></pre>
<p>Wo ist da die Rekursion?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702259</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Mon, 27 Apr 2009 19:40:45 GMT</pubDate></item><item><title><![CDATA[Reply to Verkette Liste hat ein Problem on Mon, 27 Apr 2009 19:54:37 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Element&lt;T&gt;::Element(T&amp; t) {
    next = new Element&lt;T&gt;;
}
</code></pre>
<p>Klaro hier, haste eine Rekursion.new, ruft immer den Ctor auf...Somit wird der immer und immer wieder aufgerufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702269</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Mon, 27 Apr 2009 19:54:37 GMT</pubDate></item><item><title><![CDATA[Reply to Verkette Liste hat ein Problem on Mon, 27 Apr 2009 20:10:49 GMT]]></title><description><![CDATA[<p>quatsch...<br />
es wird im COPY-Ctor der Standard-CTOR aufgerufen...</p>
<p>bb</p>
<p>edit: da sollte btw noch nen const hin -&gt; (<strong>const</strong> T &amp;t) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702280</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 27 Apr 2009 20:10:49 GMT</pubDate></item><item><title><![CDATA[Reply to Verkette Liste hat ein Problem on Mon, 27 Apr 2009 20:19:46 GMT]]></title><description><![CDATA[<p>Ad aCTa schrieb:</p>
<blockquote>
<p>ich baue gerade eine verkettete Liste, nur leider stürzt das Programm mit der klassischen Win-Fehlermeldung ab, der Compiler/Linker sagt nichts.</p>
</blockquote>
<p>Würdest du das Programm mit einem Debugger ausführen, könntest du mit grosser Wahrscheinlichkeit gerade sehen, wo das Programm abstürzt und entsprechende Variablen prüfen...</p>
<p>Achte darauf, deine Variablen zu initialisieren. Dazu gehört Zeiger auf Null setzen, wenn diese ungültig sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1702289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1702289</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 27 Apr 2009 20:19:46 GMT</pubDate></item></channel></rss>