<?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[Kann den Fehler nicht finden...]]></title><description><![CDATA[<p>Hallo!<br />
Könnte mir jemand Helfen stehe auf dem Schlauch :(.</p>
<p>Wie es aussieht überschreibe ich irgendwie alle Knoten mit dem Letzten Wert. <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 />
Vielleicht habt ihr nen Tipp für mich.</p>
<pre><code class="language-cpp">#ifndef LISTELEMENT
#define LISTELEMENT

#include &lt;iostream&gt;

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

private:
	ListElement* next;
	T			value;

public:
	/** standardkonstruktor */
	ListElement(T data, ListElement* nextE){
		this-&gt;value = data;
		this-&gt;next  = nextE;
	}
	~ListElement(){
		delete this-&gt;next;
		delete this-&gt;value;
	}

	/** get-Methode */
	T getValue(){
		return this-&gt;value;
	}

	ListElement&lt;T&gt;* getNext(){
		return this-&gt;next;
	}

	void setNext(ListElement&lt;T&gt;* nextE){
		this-&gt;next = nextE;
	}
};

#endif
</code></pre>
<pre><code class="language-cpp">#ifndef LIST
#define LIST
#include &quot;ListElement.h&quot;
#include &lt;iostream&gt;

template &lt;typename T&gt;
class List {

private:
	ListElement&lt;T&gt;* start;
	int count;

public:

	void push_back(T value) {
		ListElement&lt;T&gt;* temp = new ListElement&lt;T&gt;(value, NULL);
		ListElement&lt;T&gt;* temp2;

		if (this-&gt;start == NULL){
			this-&gt;start = temp;
			this-&gt;count++;
		} else {
			temp2 = this-&gt;start;
			while( temp2-&gt;getNext() != NULL){
				temp2 = temp2-&gt;getNext();
			}
			temp2-&gt;setNext(temp);
			this-&gt;count++;
		}

	}

	/** StandardKonstruktor. */
	List() {
		this-&gt;start = NULL;
		this-&gt;count = -1;
	}

	T getValue(int index){
		ListElement&lt;T&gt;* temp = this-&gt;start;

		for(int i = 0; i &lt; this-&gt;count; i++){

			temp = temp-&gt;getNext();
		}
		return temp-&gt;getValue();
	}

};

#endif
</code></pre>
<pre><code class="language-cpp">#include &quot;List.h&quot;
#include &quot;ListElement.h&quot;
#include &lt;iostream&gt;

int main(){
	List&lt;int&gt;* l = new List&lt;int&gt;();
	l-&gt;push_back(22);
	l-&gt;push_back(44);
	std::cout &lt;&lt; l-&gt;getValue(0)&lt;&lt; std::endl;
	std::cout &lt;&lt; l-&gt;getValue(1)&lt;&lt; std::endl;

	return 0;
}
</code></pre>
<blockquote>
<p>AUSGABE:<br />
44<br />
44</p>
</blockquote>
<p>Danke schon mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/256950/kann-den-fehler-nicht-finden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 23:06:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/256950.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Dec 2009 14:02:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kann den Fehler nicht finden... on Sun, 20 Dec 2009 14:02:31 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Könnte mir jemand Helfen stehe auf dem Schlauch :(.</p>
<p>Wie es aussieht überschreibe ich irgendwie alle Knoten mit dem Letzten Wert. <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 />
Vielleicht habt ihr nen Tipp für mich.</p>
<pre><code class="language-cpp">#ifndef LISTELEMENT
#define LISTELEMENT

#include &lt;iostream&gt;

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

private:
	ListElement* next;
	T			value;

public:
	/** standardkonstruktor */
	ListElement(T data, ListElement* nextE){
		this-&gt;value = data;
		this-&gt;next  = nextE;
	}
	~ListElement(){
		delete this-&gt;next;
		delete this-&gt;value;
	}

	/** get-Methode */
	T getValue(){
		return this-&gt;value;
	}

	ListElement&lt;T&gt;* getNext(){
		return this-&gt;next;
	}

	void setNext(ListElement&lt;T&gt;* nextE){
		this-&gt;next = nextE;
	}
};

#endif
</code></pre>
<pre><code class="language-cpp">#ifndef LIST
#define LIST
#include &quot;ListElement.h&quot;
#include &lt;iostream&gt;

template &lt;typename T&gt;
class List {

private:
	ListElement&lt;T&gt;* start;
	int count;

public:

	void push_back(T value) {
		ListElement&lt;T&gt;* temp = new ListElement&lt;T&gt;(value, NULL);
		ListElement&lt;T&gt;* temp2;

		if (this-&gt;start == NULL){
			this-&gt;start = temp;
			this-&gt;count++;
		} else {
			temp2 = this-&gt;start;
			while( temp2-&gt;getNext() != NULL){
				temp2 = temp2-&gt;getNext();
			}
			temp2-&gt;setNext(temp);
			this-&gt;count++;
		}

	}

	/** StandardKonstruktor. */
	List() {
		this-&gt;start = NULL;
		this-&gt;count = -1;
	}

	T getValue(int index){
		ListElement&lt;T&gt;* temp = this-&gt;start;

		for(int i = 0; i &lt; this-&gt;count; i++){

			temp = temp-&gt;getNext();
		}
		return temp-&gt;getValue();
	}

};

#endif
</code></pre>
<pre><code class="language-cpp">#include &quot;List.h&quot;
#include &quot;ListElement.h&quot;
#include &lt;iostream&gt;

int main(){
	List&lt;int&gt;* l = new List&lt;int&gt;();
	l-&gt;push_back(22);
	l-&gt;push_back(44);
	std::cout &lt;&lt; l-&gt;getValue(0)&lt;&lt; std::endl;
	std::cout &lt;&lt; l-&gt;getValue(1)&lt;&lt; std::endl;

	return 0;
}
</code></pre>
<blockquote>
<p>AUSGABE:<br />
44<br />
44</p>
</blockquote>
<p>Danke schon mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825365</guid><dc:creator><![CDATA[Dit_]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to Kann den Fehler nicht finden... on Sun, 20 Dec 2009 14:12:22 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">for(int i = 0; i &lt; this-&gt;count; i++){
</code></pre>
</blockquote>
<p>Es müsste heißen:</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; index; i++)
</code></pre>
<p>Außerdem:</p>
<blockquote>
<pre><code class="language-cpp">~ListElement(){
        delete this-&gt;next;
        delete this-&gt;value;
    }
</code></pre>
</blockquote>
<p>- this-&gt;value ist kein Pointer.<br />
- Sicher, dass du das nächste Element auch gleich löschen willst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825372</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to Kann den Fehler nicht finden... on Sun, 20 Dec 2009 14:18:02 GMT]]></title><description><![CDATA[<p>Ein weiterer Fehler ist die Initialisierung deiner count.<br />
Anfangs -1 Elemente, beim ersten angehangenen Wert hat man dann 0 Werte in der Liste. Aha...</p>
<p>Und prüf mal bitte auch, ob der index bei getValue() nicht größer als count ist, und wirf notfall ne out_of_range-Exception.ungeprüft gibt dir das ziemlich sicher bald den ersten Segfault <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/1825376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825376</guid><dc:creator><![CDATA[Listermaul]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Kann den Fehler nicht finden... on Sun, 20 Dec 2009 14:18:12 GMT]]></title><description><![CDATA[<p>Ich werde es jetzt nicht debuggen (Das wäre etwas, was DU machen solltest, aber ein paar Fehler sind mir aufgefallen. Der gesuchte ist auch dabei:</p>
<pre><code class="language-cpp">#ifndef LISTELEMENT
#define LISTELEMENT

#include &lt;iostream&gt;

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

private:
	ListElement* next;
	T			value;

public:
	/** standardkonstruktor */
	ListElement(T data, ListElement* nextE){
		this-&gt;value = data;       // Du weißt aber schon, dass das this vom Compiler implizit gesetzt wird?
		this-&gt;next  = nextE;
	}
	~ListElement(){
		delete this-&gt;next;         // Aua, aua. Das nächste Element soll gelöscht werden, wenn dieses Objekt zerastört wird.
		delete this-&gt;value;        // Noch größeres Aua. value wird automatisch zerstört, wenn das Objekt zerstört wird.
                                           // Das sind zwei ganz schlimme Fehler, guck dir unbedingt nochmal dynamsiche Speicherverwaltung an.
	}

	/** get-Methode */
	T getValue(){
		return this-&gt;value;       
	}

	ListElement&lt;T&gt;* getNext(){
		return this-&gt;next;
	}

	void setNext(ListElement&lt;T&gt;* nextE){
		this-&gt;next = nextE;
	}
};

#endif
</code></pre>
<pre><code class="language-cpp">#ifndef LIST
#define LIST
#include &quot;ListElement.h&quot;
#include &lt;iostream&gt;

template &lt;typename T&gt;
class List {

private:
	ListElement&lt;T&gt;* start;
	int count;

public:

	void push_back(T value) {
		ListElement&lt;T&gt;* temp = new ListElement&lt;T&gt;(value, NULL);
		ListElement&lt;T&gt;* temp2;

		if (this-&gt;start == NULL){
			this-&gt;start = temp;
			this-&gt;count++;
		} else {
			temp2 = this-&gt;start;
			while( temp2-&gt;getNext() != NULL){
				temp2 = temp2-&gt;getNext();
			}
			temp2-&gt;setNext(temp);
			this-&gt;count++;
		}

	}

	/** StandardKonstruktor. */
	List() {
		this-&gt;start = NULL;
		this-&gt;count = -1;   // Soso, eine leere Liste enthält also -1 Elemente. Dafür haben die Mathematiker eigentlich die Null erfunden. Sehr praktisch. Musst du dir unbedingt mal ansehen.
	}

	T getValue(int index){
		ListElement&lt;T&gt;* temp = this-&gt;start; // Und wenn die Liste leer ist?

		for(int i = 0; i &lt; this-&gt;count; i++){ // Und wo kommt der Index in's Spiel? Du gehst die Liste bis zum Ende durch, nicht bis zum gesuchten Element

			temp = temp-&gt;getNext();
		}
		return temp-&gt;getValue();
	}

};

#endif
</code></pre>
<pre><code class="language-cpp">#include &quot;List.h&quot;
#include &quot;ListElement.h&quot;
#include &lt;iostream&gt;

int main(){
	List&lt;int&gt;* l = new List&lt;int&gt;();
	l-&gt;push_back(22);
	l-&gt;push_back(44);
	std::cout &lt;&lt; l-&gt;getValue(0)&lt;&lt; std::endl;
	std::cout &lt;&lt; l-&gt;getValue(1)&lt;&lt; std::endl;

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1825377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825377</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to Kann den Fehler nicht finden... on Sun, 20 Dec 2009 14:19:29 GMT]]></title><description><![CDATA[<p>ach... blöder Fehler...<br />
Danke dir!</p>
<p>Achso klar wenn ich das nächste Element lösche dann kann ich eigentlich nur das erste Element enfernen... hm wie mache ich das besser ? einfach ListObjekt löschen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825378</guid><dc:creator><![CDATA[Dit_]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kann den Fehler nicht finden... on Sun, 20 Dec 2009 14:23:14 GMT]]></title><description><![CDATA[<p>Ja. Und natürlich den Pointer des Vorgängers auf den Nachfolger setzen.<br />
Und für count wäre vlt. size ein besserer Name und 0 ein besserer Startwert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825379</guid><dc:creator><![CDATA[wx++]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:23:14 GMT</pubDate></item><item><title><![CDATA[Reply to Kann den Fehler nicht finden... on Sun, 20 Dec 2009 14:26:53 GMT]]></title><description><![CDATA[<p>Dit_ schrieb:</p>
<blockquote>
<p>ach... blöder Fehler...<br />
Danke dir!</p>
<p>Achso klar wenn ich das nächste Element lösche dann kann ich eigentlich nur das erste Element enfernen... hm wie mache ich das besser ? einfach ListObjekt löschen ?</p>
</blockquote>
<p>Momentan enthält deine List-Klasse noch nicht die nötige Funktionalität, um einzelne Elemente zu löschen.<br />
Im Prinzip musst du dann einen temporären Zeiger auf das zu entfernende Objekt anlegen und geschickt den Zeiger des vorangehenden Elementes auf das Folgende setzen (kleiner Nachteil an single-linked-lists, du hast keinen Zeiger &quot;prev&quot; :p). Dann kannst du es löschen.<br />
Dass du das next löschst ist gaaanz böse, denn das löscht dann selbstverfreilich alle folgenden Elemente.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1825384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1825384</guid><dc:creator><![CDATA[Listermaul]]></dc:creator><pubDate>Sun, 20 Dec 2009 14:26:53 GMT</pubDate></item></channel></rss>