<?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[Anfängerfrage]]></title><description><![CDATA[<p>Hallo,<br />
ich arbeite erstmals in c++ und habe ein Problem mit einer LinkedList aus Instanzen einer selbst programmierten Klasse.</p>
<p>Meine Klasse (in Datei Kanten.cpp):</p>
<pre><code class="language-cpp">#include &lt;boost/lexical_cast.hpp&gt;

using namespace std;

class Kante{

	public:
		Kante( int anfang, int ende, int name, Kante *next );
		int ende;
		int anfang;
		int name;
		Kante *next;
		string text;

};

Kante::Kante( int anfangN, int endeN, int nameN, Kante *nextN )
{
	anfang = anfangN;
	ende = endeN;
	name = nameN;
	next = nextN;
	text =  &quot;Line(&quot; + boost::lexical_cast&lt;string&gt;(name) + &quot;) = {&quot; + boost::lexical_cast&lt;string&gt;( anfang ) + &quot;, &quot; + boost::lexical_cast&lt;string&gt;( ende ) + &quot;};&quot;;
}
</code></pre>
<p>Das Testprogramm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cstdlib&gt;
#include &quot;Kanten.cpp&quot;

using namespace std;

int main()
{
	Kante meineKante = new Kante( 1, 2, 1, NULL );
	cout &lt;&lt; meineKante.text;
}
</code></pre>
<p>Beim compilieren bekomme ich folgenden Fehler:<br />
KantenTest.cpp: In Funktion »int main()«:<br />
KantenTest.cpp:10:46: Fehler: Umwandlung von »Kante*« in nicht-skalaren Typen »Kante« angefordert</p>
<p>Meine Fragen:<br />
1. Wo ist der Fehler?<br />
2. Wie muss ich &quot;this&quot; oder ähnliches verwenden um im Konstruktor die seltsame Variablenbenennung zu umgehen? In Java würde ich schreiben:</p>
<pre><code class="language-cpp">Kante::Kante( int anfang, int ende, int name, Kante *next )
{
	this.anfang = anfang;
	this.ende = ende;
	this.name = name;
	this.next = next;
	this.text =  &quot;Line(&quot; + boost::lexical_cast&lt;string&gt;(name) + &quot;) = {&quot; + boost::lexical_cast&lt;string&gt;( anfang ) + &quot;, &quot; + boost::lexical_cast&lt;string&gt;( ende ) + &quot;};&quot;;
}
</code></pre>
<p>Hier führt das leider zum Fehler: Kanten.cpp:19:7: Fehler: Abfrage des Elementes »anfang« in »this«, das vom Nicht-Klassentyp »Kante* const« ist</p>
<p>Vielen Dank für Hinweise!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/296220/anfängerfrage</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 02:49:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296220.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Nov 2011 09:07:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage on Wed, 30 Nov 2011 09:07:32 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich arbeite erstmals in c++ und habe ein Problem mit einer LinkedList aus Instanzen einer selbst programmierten Klasse.</p>
<p>Meine Klasse (in Datei Kanten.cpp):</p>
<pre><code class="language-cpp">#include &lt;boost/lexical_cast.hpp&gt;

using namespace std;

class Kante{

	public:
		Kante( int anfang, int ende, int name, Kante *next );
		int ende;
		int anfang;
		int name;
		Kante *next;
		string text;

};

Kante::Kante( int anfangN, int endeN, int nameN, Kante *nextN )
{
	anfang = anfangN;
	ende = endeN;
	name = nameN;
	next = nextN;
	text =  &quot;Line(&quot; + boost::lexical_cast&lt;string&gt;(name) + &quot;) = {&quot; + boost::lexical_cast&lt;string&gt;( anfang ) + &quot;, &quot; + boost::lexical_cast&lt;string&gt;( ende ) + &quot;};&quot;;
}
</code></pre>
<p>Das Testprogramm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cstdlib&gt;
#include &quot;Kanten.cpp&quot;

using namespace std;

int main()
{
	Kante meineKante = new Kante( 1, 2, 1, NULL );
	cout &lt;&lt; meineKante.text;
}
</code></pre>
<p>Beim compilieren bekomme ich folgenden Fehler:<br />
KantenTest.cpp: In Funktion »int main()«:<br />
KantenTest.cpp:10:46: Fehler: Umwandlung von »Kante*« in nicht-skalaren Typen »Kante« angefordert</p>
<p>Meine Fragen:<br />
1. Wo ist der Fehler?<br />
2. Wie muss ich &quot;this&quot; oder ähnliches verwenden um im Konstruktor die seltsame Variablenbenennung zu umgehen? In Java würde ich schreiben:</p>
<pre><code class="language-cpp">Kante::Kante( int anfang, int ende, int name, Kante *next )
{
	this.anfang = anfang;
	this.ende = ende;
	this.name = name;
	this.next = next;
	this.text =  &quot;Line(&quot; + boost::lexical_cast&lt;string&gt;(name) + &quot;) = {&quot; + boost::lexical_cast&lt;string&gt;( anfang ) + &quot;, &quot; + boost::lexical_cast&lt;string&gt;( ende ) + &quot;};&quot;;
}
</code></pre>
<p>Hier führt das leider zum Fehler: Kanten.cpp:19:7: Fehler: Abfrage des Elementes »anfang« in »this«, das vom Nicht-Klassentyp »Kante* const« ist</p>
<p>Vielen Dank für Hinweise!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2150877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2150877</guid><dc:creator><![CDATA[fronzenlaf]]></dc:creator><pubDate>Wed, 30 Nov 2011 09:07:32 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage on Wed, 30 Nov 2011 09:21:00 GMT]]></title><description><![CDATA[<p>Warum verwendest du new?</p>
<p>Wenn du new verwendest musst du das ergebnis auch einem pointer zuweisen. Ansonsten kannstes auch einfach auf dem stack anlegen:</p>
<p>mit pointer:</p>
<pre><code class="language-cpp">Kante * meineKante = new Kante( 1, 2, 1, NULL );
</code></pre>
<p>Aufm stack:</p>
<pre><code class="language-cpp">Kante meineKante( 1, 2, 1, NULL );
</code></pre>
<p>Und zu der stringzusammensetzung verwendest du am besten einen std::stringstream:</p>
<pre><code class="language-cpp">#include &lt;sstream&gt;
...

std::stringstream ss;
ss &lt;&lt; &quot;Line(&quot; &lt;&lt; name &lt;&lt; ... &lt;&lt; ...;
string text = ss.str();
</code></pre>
<p>Dann kannste dir sogar die lexical casts sparen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2150886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2150886</guid><dc:creator><![CDATA[*Q* 1]]></dc:creator><pubDate>Wed, 30 Nov 2011 09:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage on Wed, 30 Nov 2011 09:20:04 GMT]]></title><description><![CDATA[<p>Achso, new ----&gt; Pointer<br />
Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2150889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2150889</guid><dc:creator><![CDATA[fronzenlaf]]></dc:creator><pubDate>Wed, 30 Nov 2011 09:20:04 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage on Wed, 30 Nov 2011 09:21:34 GMT]]></title><description><![CDATA[<p>fronzenlaf schrieb:</p>
<blockquote>
<p>Meine Fragen:<br />
1. Wo ist der Fehler?</p>
</blockquote>
<p>Schau mal nach, von welchem Typ &quot;meineKante&quot; ist, und schau in dein C++-Buch, welchen Typ new zurückgibt. C++ ist nicht Java.</p>
<blockquote>
<p>2. Wie muss ich &quot;this&quot; oder ähnliches verwenden um im Konstruktor die seltsame Variablenbenennung zu umgehen? In Java würde ich schreiben:</p>
</blockquote>
<p>Ähnliches Problem wie oben. Schau in deinem Buch nach, von welchem typ this ist. Und wie man mit Pointern umgeht.</p>
<p>Grundsätzlich: vergiss, was du aus Java kennst. Es ist in C++ fast immer ein wenig anders, dein Java-Wissen darfst du nicht auf C++ anwenden, es steht dir dann nur im Weg.</p>
<p>Drei weitere Dinge:</p>
<ol>
<li>schau dir für deinen Konstruktor mal das Thema &quot;Initialisierungsliste&quot; an.</li>
<li>In C++ teilt man den Code in Header (*.h, <em>.hpp) und Sourcen (</em>.C, *.cc, *.cpp) auf. Das Thema musst du dir auch anschauen, man #includet keine Source-Files.</li>
<li>Du brauchst nicht überall new, um neue Objekte zu erzeugen. C++ ist nicht Java <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="😉"
    /></li>
</ol>
<p>Schreib dir den Spruch am Besten auf ein großes Schild und häng ihn dir über den Monitor:<br />
<strong>C++ IST NICHT JAVA!</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2150890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2150890</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 30 Nov 2011 09:21:34 GMT</pubDate></item></channel></rss>