<?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[Verkettete Liste - Zeigerzuweisungen]]></title><description><![CDATA[<p>Hi,</p>
<p>bin gerade dabei mir eine eigene verkettete Liste zu programmieren.</p>
<p>Ich erklärs hier mal kurz. Wem die nachfolgende Erklärung zu lang ist, der schaut sich einfach den Code, d.h. die Mainfunktion am Ende des Beitrags an. Dort ist das Problem noch mal kommentiert.</p>
<p>Meine Idee:<br />
-Eine Grundklasse mit GetNext(){return this;}, GetPrevious(), GetLast() usw.<br />
-Eine Klasse mit allen zu speichernden Werten z. B. String name, int nummer usw.</p>
<p>Ich vererbe dann die Grundklasse an die normale Klasse. Ich kann dann von der normalen Klasse aus auf die Funktionen der Grundklasse zugreifen.</p>
<p>Beispiel der Vererbung<br />
class Klasse : public Grundklasse ...</p>
<p>Beispiel des Funktonszugriffs<br />
Klasse-&gt;GetNext();</p>
<p>Für die verkettete Liste brauch ich aber auch so was:</p>
<p>Klasse *test1=new Klasse();<br />
Klasse *test2;</p>
<p>und dann<br />
test2=test1-&gt;GetNext();</p>
<p>Und genau hier steigt der Compiler aus: Ich kann die Funktion<br />
Grundklasse *Grundklasse::GetNext(){return this;}<br />
nicht verwenden, da es einen Zeiger auf die Klasse &quot;Grundklasse&quot; liefert. Der Compiler will aber einen Zeiger vom Typ &quot;Klasse&quot; haben.</p>
<p>Wie krieg ich den jetzt dazu, das er das aktzeptiert?</p>
<p>Die Fehlermeldung:</p>
<pre><code>27 C:\test\main.cpp invalid conversion from `verketteteliste*' to `listenitem*'
</code></pre>
<p>kommt in folgendem Beispiel vor:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
using namespace std;

class verketteteliste;
class listenitem;

class verketteteliste
{
	public:
		verketteteliste *Next();
};

class listenitem : public verketteteliste
{
	public:
		listenitem *itemfunktion();
};

int main(int argc, char *argv[])
{
	listenitem *item1;
	verketteteliste *vkliste=new verketteteliste();

	item1=vkliste-&gt;Next(); //Mag er nicht, da Next() nicht vom Typ listenitem sondern vom Typ verketteteliste. Item1 ist aber Typ listenitem.

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}

verketteteliste *verketteteliste::Next()
{
	return this;
}

listenitem *listenitem::itemfunktion()
{
	return this;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/220416/verkettete-liste-zeigerzuweisungen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 02:07:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220416.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Aug 2008 18:27:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verkettete Liste - Zeigerzuweisungen on Fri, 15 Aug 2008 18:31:26 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>bin gerade dabei mir eine eigene verkettete Liste zu programmieren.</p>
<p>Ich erklärs hier mal kurz. Wem die nachfolgende Erklärung zu lang ist, der schaut sich einfach den Code, d.h. die Mainfunktion am Ende des Beitrags an. Dort ist das Problem noch mal kommentiert.</p>
<p>Meine Idee:<br />
-Eine Grundklasse mit GetNext(){return this;}, GetPrevious(), GetLast() usw.<br />
-Eine Klasse mit allen zu speichernden Werten z. B. String name, int nummer usw.</p>
<p>Ich vererbe dann die Grundklasse an die normale Klasse. Ich kann dann von der normalen Klasse aus auf die Funktionen der Grundklasse zugreifen.</p>
<p>Beispiel der Vererbung<br />
class Klasse : public Grundklasse ...</p>
<p>Beispiel des Funktonszugriffs<br />
Klasse-&gt;GetNext();</p>
<p>Für die verkettete Liste brauch ich aber auch so was:</p>
<p>Klasse *test1=new Klasse();<br />
Klasse *test2;</p>
<p>und dann<br />
test2=test1-&gt;GetNext();</p>
<p>Und genau hier steigt der Compiler aus: Ich kann die Funktion<br />
Grundklasse *Grundklasse::GetNext(){return this;}<br />
nicht verwenden, da es einen Zeiger auf die Klasse &quot;Grundklasse&quot; liefert. Der Compiler will aber einen Zeiger vom Typ &quot;Klasse&quot; haben.</p>
<p>Wie krieg ich den jetzt dazu, das er das aktzeptiert?</p>
<p>Die Fehlermeldung:</p>
<pre><code>27 C:\test\main.cpp invalid conversion from `verketteteliste*' to `listenitem*'
</code></pre>
<p>kommt in folgendem Beispiel vor:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
using namespace std;

class verketteteliste;
class listenitem;

class verketteteliste
{
	public:
		verketteteliste *Next();
};

class listenitem : public verketteteliste
{
	public:
		listenitem *itemfunktion();
};

int main(int argc, char *argv[])
{
	listenitem *item1;
	verketteteliste *vkliste=new verketteteliste();

	item1=vkliste-&gt;Next(); //Mag er nicht, da Next() nicht vom Typ listenitem sondern vom Typ verketteteliste. Item1 ist aber Typ listenitem.

    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}

verketteteliste *verketteteliste::Next()
{
	return this;
}

listenitem *listenitem::itemfunktion()
{
	return this;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1565686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1565686</guid><dc:creator><![CDATA[Big_Exception]]></dc:creator><pubDate>Fri, 15 Aug 2008 18:31:26 GMT</pubDate></item><item><title><![CDATA[Reply to Verkettete Liste - Zeigerzuweisungen on Fri, 15 Aug 2008 18:56:42 GMT]]></title><description><![CDATA[<p>warum das aufsplitten in 2 klassen?</p>
<p>ein einfaches</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class list
{
public:
list *next;
list *prev;
T entry;
};
</code></pre>
<p>machts wo nicht?</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1565698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1565698</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 15 Aug 2008 18:56:42 GMT</pubDate></item></channel></rss>