<?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[Probleme mit Zeigern oder so]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe Probleme mit meiner Baumklasse.<br />
Ich vermute, dass der Fehler in dem Konstruktor liegt, der einen HuffmanToken bekommt, habe aber keine Ahnung was da falsch ist.<br />
HuffmanToken ist ein selbstdefinierter Datentyp, der einen Buchstaben und seine Frequenz (in einem gegebenen Text) enthält.</p>
<pre><code>#include &quot;HuffmanTreeNode.h&quot;
#include &lt;iostream&gt;
using namespace std;

class HuffmanTree {	
	private:
		HuffmanTreeNode *dummy;
		HuffmanTreeNode *curr;

	public:
		// default constructor
		HuffmanTree() {

		}

		// constructor, constructing a tree with one node containing a given object
		HuffmanTree(HuffmanToken *obj) {
			dummy-&gt;setLeftSon(new HuffmanTreeNode(obj));
			dummy-&gt;getLeftSon()-&gt;setParent(dummy);
			dummy-&gt;getLeftSon()-&gt;setLeftSon(0);
			dummy-&gt;getLeftSon()-&gt;setRightSon(0);

		}

		// destructor
		~HuffmanTree() {

		}

		// ctor, constructing a new HuffmanTree out of 2 HuffmanTrees
		HuffmanTree(HuffmanTree *t1, HuffmanTree *t2) {
			// create new HuffmanTree with the sum of the frequencies of the 2 old HuffmanTrees as new frequency
			double d1 = t1-&gt;getRoot()-&gt;getData()-&gt;getFreq();
			double d2 = t2-&gt;getRoot()-&gt;getData()-&gt;getFreq();
			HuffmanToken *Tok = new HuffmanToken(d1 + d2);

			cout &lt;&lt; &quot;1 : T1 Freq: &quot;&lt;&lt;t1-&gt;getRoot()-&gt;getData()-&gt;getFreq() &lt;&lt; &quot;\n&quot;;
        	cout &lt;&lt; &quot;2 : T2 Freq: &quot;&lt;&lt;t2-&gt;getRoot()-&gt;getData()-&gt;getFreq() &lt;&lt; &quot;\n&quot;;
			HuffmanTreeNode *root = new HuffmanTreeNode(Tok);
			dummy-&gt;setLeftSon(root);
			root-&gt;setLeftSon(t1-&gt;getRoot());
			t1-&gt;getRoot()-&gt;setParent(root);
			root-&gt;setRightSon(t2-&gt;getRoot());
			t2-&gt;getRoot()-&gt;setParent(root);
		}

// returns the root node of the tree
		HuffmanTreeNode* getRoot() {
			return dummy-&gt;getLeftSon();	
		}

}; // HuffmanTree
</code></pre>
<p>Ich kann problemlos einen Baum initialisieren, auch einen zweiten, aber sobald ich einen dritten Baum initialisieren möchte, ist der zweite verloren.</p>
<p>Beispiel:</p>
<pre><code>int main() {

	HuffmanTree *tree1 = new HuffmanTree(new HuffmanToken('a', 5));

	HuffmanTree *tree2 = new HuffmanTree(new HuffmanToken('c', 8));
	cout &lt;&lt; &quot;Tree1 Freq: &quot;&lt;&lt;tree1-&gt;getRoot()-&gt;getData()-&gt;getFreq() &lt;&lt; &quot;\n&quot;;
	cout &lt;&lt; &quot;Tree1 Char: &quot;&lt;&lt;tree1-&gt;getRoot()-&gt;getData()-&gt;getChar() &lt;&lt; &quot;\n&quot;;

	HuffmanTree *tree3 = new HuffmanTree(new HuffmanToken('b', 2));

	cout&lt;&lt;&quot;\n tree1:&quot;&lt;&lt;tree1;
	cout&lt;&lt;&quot;\n tree2:&quot;&lt;&lt;tree2;
	cout&lt;&lt;&quot;\n tree3:&quot;&lt;&lt;tree3;
</code></pre>
<p>Bei der Ausgabe sieht man, dass die Adresse von tree2 und tree3 die gleichen ist.</p>
<blockquote>
<p>tree1:000331F8<br />
tree2:000347B0<br />
tree3:000347B0</p>
</blockquote>
<p>Kann mir jemand sagen, was ich falsch gemacht habe?<br />
Hat es eventuell etwas damit zu tun, dass ich den Konstruktor nicht mit delete aufrufe? Ich weiß bloß leider nicht, wann ich einen Baum löschen muss.</p>
<p>Grüße, CoLi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/210827/probleme-mit-zeigern-oder-so</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 17:31:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/210827.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 15 Apr 2008 18:51:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit Zeigern oder so on Tue, 15 Apr 2008 18:51:41 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe Probleme mit meiner Baumklasse.<br />
Ich vermute, dass der Fehler in dem Konstruktor liegt, der einen HuffmanToken bekommt, habe aber keine Ahnung was da falsch ist.<br />
HuffmanToken ist ein selbstdefinierter Datentyp, der einen Buchstaben und seine Frequenz (in einem gegebenen Text) enthält.</p>
<pre><code>#include &quot;HuffmanTreeNode.h&quot;
#include &lt;iostream&gt;
using namespace std;

class HuffmanTree {	
	private:
		HuffmanTreeNode *dummy;
		HuffmanTreeNode *curr;

	public:
		// default constructor
		HuffmanTree() {

		}

		// constructor, constructing a tree with one node containing a given object
		HuffmanTree(HuffmanToken *obj) {
			dummy-&gt;setLeftSon(new HuffmanTreeNode(obj));
			dummy-&gt;getLeftSon()-&gt;setParent(dummy);
			dummy-&gt;getLeftSon()-&gt;setLeftSon(0);
			dummy-&gt;getLeftSon()-&gt;setRightSon(0);

		}

		// destructor
		~HuffmanTree() {

		}

		// ctor, constructing a new HuffmanTree out of 2 HuffmanTrees
		HuffmanTree(HuffmanTree *t1, HuffmanTree *t2) {
			// create new HuffmanTree with the sum of the frequencies of the 2 old HuffmanTrees as new frequency
			double d1 = t1-&gt;getRoot()-&gt;getData()-&gt;getFreq();
			double d2 = t2-&gt;getRoot()-&gt;getData()-&gt;getFreq();
			HuffmanToken *Tok = new HuffmanToken(d1 + d2);

			cout &lt;&lt; &quot;1 : T1 Freq: &quot;&lt;&lt;t1-&gt;getRoot()-&gt;getData()-&gt;getFreq() &lt;&lt; &quot;\n&quot;;
        	cout &lt;&lt; &quot;2 : T2 Freq: &quot;&lt;&lt;t2-&gt;getRoot()-&gt;getData()-&gt;getFreq() &lt;&lt; &quot;\n&quot;;
			HuffmanTreeNode *root = new HuffmanTreeNode(Tok);
			dummy-&gt;setLeftSon(root);
			root-&gt;setLeftSon(t1-&gt;getRoot());
			t1-&gt;getRoot()-&gt;setParent(root);
			root-&gt;setRightSon(t2-&gt;getRoot());
			t2-&gt;getRoot()-&gt;setParent(root);
		}

// returns the root node of the tree
		HuffmanTreeNode* getRoot() {
			return dummy-&gt;getLeftSon();	
		}

}; // HuffmanTree
</code></pre>
<p>Ich kann problemlos einen Baum initialisieren, auch einen zweiten, aber sobald ich einen dritten Baum initialisieren möchte, ist der zweite verloren.</p>
<p>Beispiel:</p>
<pre><code>int main() {

	HuffmanTree *tree1 = new HuffmanTree(new HuffmanToken('a', 5));

	HuffmanTree *tree2 = new HuffmanTree(new HuffmanToken('c', 8));
	cout &lt;&lt; &quot;Tree1 Freq: &quot;&lt;&lt;tree1-&gt;getRoot()-&gt;getData()-&gt;getFreq() &lt;&lt; &quot;\n&quot;;
	cout &lt;&lt; &quot;Tree1 Char: &quot;&lt;&lt;tree1-&gt;getRoot()-&gt;getData()-&gt;getChar() &lt;&lt; &quot;\n&quot;;

	HuffmanTree *tree3 = new HuffmanTree(new HuffmanToken('b', 2));

	cout&lt;&lt;&quot;\n tree1:&quot;&lt;&lt;tree1;
	cout&lt;&lt;&quot;\n tree2:&quot;&lt;&lt;tree2;
	cout&lt;&lt;&quot;\n tree3:&quot;&lt;&lt;tree3;
</code></pre>
<p>Bei der Ausgabe sieht man, dass die Adresse von tree2 und tree3 die gleichen ist.</p>
<blockquote>
<p>tree1:000331F8<br />
tree2:000347B0<br />
tree3:000347B0</p>
</blockquote>
<p>Kann mir jemand sagen, was ich falsch gemacht habe?<br />
Hat es eventuell etwas damit zu tun, dass ich den Konstruktor nicht mit delete aufrufe? Ich weiß bloß leider nicht, wann ich einen Baum löschen muss.</p>
<p>Grüße, CoLi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1492589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1492589</guid><dc:creator><![CDATA[CoLi]]></dc:creator><pubDate>Tue, 15 Apr 2008 18:51:41 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Zeigern oder so on Tue, 15 Apr 2008 19:56:19 GMT]]></title><description><![CDATA[<p>lerne wie man einen debugger benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1492621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1492621</guid><dc:creator><![CDATA[tippfürdiezukunft]]></dc:creator><pubDate>Tue, 15 Apr 2008 19:56:19 GMT</pubDate></item></channel></rss>