<?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 bei deque]]></title><description><![CDATA[<p>Also ich habe ne Dequeklasse bebastelt, aber es tritt ein fehler auf den ich mir nicht erkären kann:</p>
<pre><code class="language-cpp">#pragma once
#include &lt;algorithm&gt;

template&lt;class T&gt;
class MyDeque
{
private:
	class DequeElement
	{
	public:
		T data;
		DequeElement *next;
		DequeElement *prev;
		DequeElement(const T&amp; t):data(t),next(NULL),prev(NULL) {}
	};
	class EmptyDequeException : public std::exception 
	{
		virtual const char* what() throw() {return &quot;Deque is empty&quot;;}
	};
	DequeElement *first;
	DequeElement *last;
	unsigned int anz_elem;
public:
	MyDeque();
	MyDeque(const MyDeque&amp; other);
	~MyDeque();
	void push(const T&amp; v);
	void put(const T&amp; v);
	T pop();
	T get();
	T get_first();
	T get_last();
	unsigned int getAnzahlElemente();
	bool is_empty();
	void clear();
	void swap(MyDeque&amp; other);
	MyDeque&lt;T&gt;&amp; operator=(const MyDeque&amp; other);
};
</code></pre>
<p>ist die klasse, der fehler tritt bei der push methode auf:</p>
<pre><code class="language-cpp">template&lt;class T&gt;void MyDeque&lt;T&gt;::push(const T&amp; v)
{
	DequeElement *temp = new DequeElement(v);
	if(!this-&gt;first)
		this-&gt;last = temp;
	temp-&gt;next = this-&gt;first;
	temp-&gt;prev = NULL;
	this-&gt;first-&gt;prev = temp; &lt;-- hier tritt der Fehler auf
	this-&gt;first = temp;
	++anz_elem;
}
</code></pre>
<p>Wenn ich next anstelle von prev schreibe, kommt kein fehler nur wenn ich prev schreibe kommt der fehler...</p>
<p>Unhandled exception at 0x0040105e in container.exe: 0xC0000005: Access violation writing location 0x00000008.</p>
<p>ist die fehlermeldung</p>
<p>Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219351/problem-bei-deque</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 07:57:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219351.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 01 Aug 2008 20:06:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei deque on Fri, 01 Aug 2008 20:06:46 GMT]]></title><description><![CDATA[<p>Also ich habe ne Dequeklasse bebastelt, aber es tritt ein fehler auf den ich mir nicht erkären kann:</p>
<pre><code class="language-cpp">#pragma once
#include &lt;algorithm&gt;

template&lt;class T&gt;
class MyDeque
{
private:
	class DequeElement
	{
	public:
		T data;
		DequeElement *next;
		DequeElement *prev;
		DequeElement(const T&amp; t):data(t),next(NULL),prev(NULL) {}
	};
	class EmptyDequeException : public std::exception 
	{
		virtual const char* what() throw() {return &quot;Deque is empty&quot;;}
	};
	DequeElement *first;
	DequeElement *last;
	unsigned int anz_elem;
public:
	MyDeque();
	MyDeque(const MyDeque&amp; other);
	~MyDeque();
	void push(const T&amp; v);
	void put(const T&amp; v);
	T pop();
	T get();
	T get_first();
	T get_last();
	unsigned int getAnzahlElemente();
	bool is_empty();
	void clear();
	void swap(MyDeque&amp; other);
	MyDeque&lt;T&gt;&amp; operator=(const MyDeque&amp; other);
};
</code></pre>
<p>ist die klasse, der fehler tritt bei der push methode auf:</p>
<pre><code class="language-cpp">template&lt;class T&gt;void MyDeque&lt;T&gt;::push(const T&amp; v)
{
	DequeElement *temp = new DequeElement(v);
	if(!this-&gt;first)
		this-&gt;last = temp;
	temp-&gt;next = this-&gt;first;
	temp-&gt;prev = NULL;
	this-&gt;first-&gt;prev = temp; &lt;-- hier tritt der Fehler auf
	this-&gt;first = temp;
	++anz_elem;
}
</code></pre>
<p>Wenn ich next anstelle von prev schreibe, kommt kein fehler nur wenn ich prev schreibe kommt der fehler...</p>
<p>Unhandled exception at 0x0040105e in container.exe: 0xC0000005: Access violation writing location 0x00000008.</p>
<p>ist die fehlermeldung</p>
<p>Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1557788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1557788</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Fri, 01 Aug 2008 20:06:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei deque on Fri, 01 Aug 2008 20:32:10 GMT]]></title><description><![CDATA[<p>Beim pushen des ersten Elements ist this-&gt;first == NULL und wird nicht initialisiert. Du versuchst aber auf this-&gt;first-&gt;prev zuzugreifen, was natürlich fehlschlägt.<br />
Vorschlag:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
void MyDeque&lt;T&gt;::push(const T&amp; v)
{
    DequeElement *temp = new DequeElement(v);
    if(!this-&gt;first)
        this-&gt;first = this-&gt;last = temp; // first und last zeigen auf das selbe Element
    else
    {
        temp-&gt;next = this-&gt;first;
        //temp-&gt;prev = NULL; durch Ctor gewährleistet
        this-&gt;first-&gt;prev = temp; // first wurde bereits gesetzt
        this-&gt;first = temp;
    }
    ++anz_elem;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1557800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1557800</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Fri, 01 Aug 2008 20:32:10 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei deque on Fri, 01 Aug 2008 20:36:06 GMT]]></title><description><![CDATA[<p>iup das leuchtet mir ein^^</p>
<p>danke für die schnelle antwort</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1557802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1557802</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Fri, 01 Aug 2008 20:36:06 GMT</pubDate></item></channel></rss>