<?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[Pointerproblem]]></title><description><![CDATA[<p>Hallo ich versuche gerade eine Art Baumstruktur zu implementieren.</p>
<p>Ich hab mir also ne Structure angelegt und ein paar Funktionen zum Arbeiten mit dem Baum eingebaut:</p>
<pre><code>// TreeMemory.h: Schnittstelle für die Klasse TreeMemory.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TREEMEMORY_H__DD2A1C92_D23E_47EB_913D_1C1F36B94BB8__INCLUDED_)
#define AFX_TREEMEMORY_H__DD2A1C92_D23E_47EB_913D_1C1F36B94BB8__INCLUDED_

#if _MSC_VER &gt; 1000
#pragma once
#endif // _MSC_VER &gt; 1000

struct TreeMember
	{	CString bezeichnung;
		TreeMember *nextItem;
		TreeMember *firstChild;
	};

class TreeMemory  
{
public:
	TreeMember GetNextItem(TreeMember element);
	CString GetText(TreeMember element);
	boolean HasNext(TreeMember element);
	TreeMember InsertItem(CString bezeichnung);
	TreeMemory();
	virtual ~TreeMemory();

private:
	TreeMember *p_last;
	TreeMember *p_first;
};

#endif // !defined(AFX_TREEMEMORY_H__DD2A1C92_D23E_47EB_913D_1C1F36B94BB8__INCLUDED_)
</code></pre>
<p>Dazu der Code für die Klasse:</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &quot;stdafx.h&quot;
#include &quot;TreeMemory.h&quot;

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Konstruktion/Destruktion
//////////////////////////////////////////////////////////////////////
/// @brief Dient zur Speicherverwaltung einer Hierarchischen Baumstruktur
TreeMemory::TreeMemory()
{
	p_first = 0;
	p_last = 0;
}
TreeMemory::~TreeMemory()
{

}

/// @brief Ermöglicht es neue Elemente in den Baum einzubauen
TreeMember TreeMemory::InsertItem(CString bezeichnung)
{
	TreeMember *p_neu = new TreeMember;
	if (p_first == 0)
	{
		p_first = p_neu;
		p_last = p_neu;
		p_neu-&gt;bezeichnung=bezeichnung;
		p_neu-&gt;nextItem = 0;
		p_neu-&gt;firstChild = 0;
	}
	else
	{
		p_last-&gt;nextItem = p_neu;
		p_neu-&gt;bezeichnung = bezeichnung;
		p_neu-&gt;nextItem = 0;	
		p_neu-&gt;firstChild = 0;
		p_last = p_neu;	

	}
	return *p_neu;
}

boolean TreeMemory::HasNext(TreeMember element)
{
	if (&amp;element.nextItem == 0)
	{
		return false;
	}
	else
	{
		return true;
	}
}

CString TreeMemory::GetText(TreeMember element)
{
	return element.bezeichnung;
}

TreeMember TreeMemory::GetNextItem(TreeMember element)
{
	return *element.nextItem;
}
</code></pre>
<p>Soweit so gut. Bevor ich mit weiteren Sachen in Richtung Kinderknoten weitermachen wollte wollte ich erst mal testen.</p>
<p>Also folgender kleiner Test:</p>
<pre><code>TreeMemory baum;
TreeMember eins, zwei;
CString text;

eins = baum.InsertItem(&quot;Erstes Element&quot;);
zwei = baum.InsertItem(&quot;Zweites Element&quot;);
//zwei = baum.GetNextItem(eins);
text = baum.GetText(zwei);
MessageBox(text);
if (baum.HasNext(eins))
{
	MessageBox(&quot;Erfolg&quot;);
}
</code></pre>
<p>Funktioniert auch soweit, aber wenn ich in dem Test die auskommentierte Zeile wieder einkommentieren, dann kompiliert er zwar noch, aber ich erhalte ich die Fehlermeldung, dass ein Problem festgestellt wurde und beendet werden mußte. Problembericht senden... blablabla.</p>
<p>Ich vermute jetzt mal, dass ich mich so verhauen hab, dass ich irgendwo Speicher anspreche mit dem ich gar nix zu tun haben darf und will. Aber ich finde den Fehler nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205479/pointerproblem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 04:47:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205479.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Feb 2008 17:17:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointerproblem on Thu, 14 Feb 2008 17:17:16 GMT]]></title><description><![CDATA[<p>Hallo ich versuche gerade eine Art Baumstruktur zu implementieren.</p>
<p>Ich hab mir also ne Structure angelegt und ein paar Funktionen zum Arbeiten mit dem Baum eingebaut:</p>
<pre><code>// TreeMemory.h: Schnittstelle für die Klasse TreeMemory.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TREEMEMORY_H__DD2A1C92_D23E_47EB_913D_1C1F36B94BB8__INCLUDED_)
#define AFX_TREEMEMORY_H__DD2A1C92_D23E_47EB_913D_1C1F36B94BB8__INCLUDED_

#if _MSC_VER &gt; 1000
#pragma once
#endif // _MSC_VER &gt; 1000

struct TreeMember
	{	CString bezeichnung;
		TreeMember *nextItem;
		TreeMember *firstChild;
	};

class TreeMemory  
{
public:
	TreeMember GetNextItem(TreeMember element);
	CString GetText(TreeMember element);
	boolean HasNext(TreeMember element);
	TreeMember InsertItem(CString bezeichnung);
	TreeMemory();
	virtual ~TreeMemory();

private:
	TreeMember *p_last;
	TreeMember *p_first;
};

#endif // !defined(AFX_TREEMEMORY_H__DD2A1C92_D23E_47EB_913D_1C1F36B94BB8__INCLUDED_)
</code></pre>
<p>Dazu der Code für die Klasse:</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &quot;stdafx.h&quot;
#include &quot;TreeMemory.h&quot;

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Konstruktion/Destruktion
//////////////////////////////////////////////////////////////////////
/// @brief Dient zur Speicherverwaltung einer Hierarchischen Baumstruktur
TreeMemory::TreeMemory()
{
	p_first = 0;
	p_last = 0;
}
TreeMemory::~TreeMemory()
{

}

/// @brief Ermöglicht es neue Elemente in den Baum einzubauen
TreeMember TreeMemory::InsertItem(CString bezeichnung)
{
	TreeMember *p_neu = new TreeMember;
	if (p_first == 0)
	{
		p_first = p_neu;
		p_last = p_neu;
		p_neu-&gt;bezeichnung=bezeichnung;
		p_neu-&gt;nextItem = 0;
		p_neu-&gt;firstChild = 0;
	}
	else
	{
		p_last-&gt;nextItem = p_neu;
		p_neu-&gt;bezeichnung = bezeichnung;
		p_neu-&gt;nextItem = 0;	
		p_neu-&gt;firstChild = 0;
		p_last = p_neu;	

	}
	return *p_neu;
}

boolean TreeMemory::HasNext(TreeMember element)
{
	if (&amp;element.nextItem == 0)
	{
		return false;
	}
	else
	{
		return true;
	}
}

CString TreeMemory::GetText(TreeMember element)
{
	return element.bezeichnung;
}

TreeMember TreeMemory::GetNextItem(TreeMember element)
{
	return *element.nextItem;
}
</code></pre>
<p>Soweit so gut. Bevor ich mit weiteren Sachen in Richtung Kinderknoten weitermachen wollte wollte ich erst mal testen.</p>
<p>Also folgender kleiner Test:</p>
<pre><code>TreeMemory baum;
TreeMember eins, zwei;
CString text;

eins = baum.InsertItem(&quot;Erstes Element&quot;);
zwei = baum.InsertItem(&quot;Zweites Element&quot;);
//zwei = baum.GetNextItem(eins);
text = baum.GetText(zwei);
MessageBox(text);
if (baum.HasNext(eins))
{
	MessageBox(&quot;Erfolg&quot;);
}
</code></pre>
<p>Funktioniert auch soweit, aber wenn ich in dem Test die auskommentierte Zeile wieder einkommentieren, dann kompiliert er zwar noch, aber ich erhalte ich die Fehlermeldung, dass ein Problem festgestellt wurde und beendet werden mußte. Problembericht senden... blablabla.</p>
<p>Ich vermute jetzt mal, dass ich mich so verhauen hab, dass ich irgendwo Speicher anspreche mit dem ich gar nix zu tun haben darf und will. Aber ich finde den Fehler nicht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456017</guid><dc:creator><![CDATA[angelus05]]></dc:creator><pubDate>Thu, 14 Feb 2008 17:17:16 GMT</pubDate></item><item><title><![CDATA[Reply to Pointerproblem on Thu, 14 Feb 2008 19:59:19 GMT]]></title><description><![CDATA[<p>Habs mittlerweile selber rausgefunden:</p>
<p>Dadurch, dass ich beim Aufruf nicht die Adressen, sondern Objekte zurückgebe erzeugt das Programm Kopien des Objektes. Natürlich stimmen dann die Adressverlinkungen zwischen den einzelnen Elementen nicht mehr und die Pointer zeigen irgendwo hin.</p>
<p>Ist das jetzt verständlich?<br />
Ich habs auf jeden Fall verstanden und wenns jemanden interessiert, dann poste ich noch den richtig gestellten Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1456130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1456130</guid><dc:creator><![CDATA[angelus05]]></dc:creator><pubDate>Thu, 14 Feb 2008 19:59:19 GMT</pubDate></item></channel></rss>