<?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[Klassenzeiger]]></title><description><![CDATA[<p>Hallo,<br />
entschuldigt, wenn die Frage bereits gestellt wurde aber ich hatte mit SuFu nichts gefunden.</p>
<p>Mich interessiert wann und warum man eine Klasse als Zeiger initialisieren muss.<br />
Also nach der Art:<br />
MyClass* Klasse<br />
Ich habe das bereits in vielen Tutorials gesehen aber nirgends wird erklärt warum es so gemacht wird.</p>
<p>Danke für eure Antwort.</p>
<p>Ps: Bin der Neue schön hier zu sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267763/klassenzeiger</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 07:01:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267763.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 29 May 2010 21:56:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassenzeiger on Sat, 29 May 2010 21:56:44 GMT]]></title><description><![CDATA[<p>Hallo,<br />
entschuldigt, wenn die Frage bereits gestellt wurde aber ich hatte mit SuFu nichts gefunden.</p>
<p>Mich interessiert wann und warum man eine Klasse als Zeiger initialisieren muss.<br />
Also nach der Art:<br />
MyClass* Klasse<br />
Ich habe das bereits in vielen Tutorials gesehen aber nirgends wird erklärt warum es so gemacht wird.</p>
<p>Danke für eure Antwort.</p>
<p>Ps: Bin der Neue schön hier zu sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904304</guid><dc:creator><![CDATA[Leswile]]></dc:creator><pubDate>Sat, 29 May 2010 21:56:44 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzeiger on Sat, 29 May 2010 22:11:51 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Man muss das so machen, wenn die Klasse zu diesem Zeitpunkt zwar deklariert, jedoch nicht definiert wurde. Da man nur einen Zeiger auf die Klasse deklariert, muss kein Speicher für das Objekt erstellt werden. Willst du allerdings eine Instanz einer Klasse erzeugen, muss die Größe der Klasse zu diesem Zeitpunkt bekannt sein.<br />
Hier ein Beispiel:</p>
<pre><code class="language-cpp">class A;

class B
{
private:
A* Obj; // Größe von A unbekannt
};

class A
{
private:
B Obj; // Hier kann eine Instanz erzeugt werden, da die Größe von B bekannt ist.
};
</code></pre>
<p>Kannst ja mal nach rekursiven Datenstrukturen suchen, da braucht man das auch.</p>
<p>MfG, Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904307</guid><dc:creator><![CDATA[Jochen S.]]></dc:creator><pubDate>Sat, 29 May 2010 22:11:51 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzeiger on Sat, 29 May 2010 22:25:27 GMT]]></title><description><![CDATA[<p>Also ist der einzige Unterschied in der Initialisierung?<br />
Danach kann man sie wie jede andere Klasse verwenden<br />
oder gibt es irgendetwas was man ansonsten noch beachten muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904311</guid><dc:creator><![CDATA[Leswile]]></dc:creator><pubDate>Sat, 29 May 2010 22:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzeiger on Sat, 29 May 2010 22:33:44 GMT]]></title><description><![CDATA[<p>Leswile schrieb:</p>
<blockquote>
<p>Also ist der einzige Unterschied in der Initialisierung?<br />
Danach kann man sie wie jede andere Klasse verwenden<br />
oder gibt es irgendetwas was man ansonsten noch beachten muss?</p>
</blockquote>
<p>Vorwärtsdeklarierte Klassen haben folgende Restriktionen:<br />
- Du kannst keine Instanz erstellen (auch mit new nicht)<br />
- Du kannst keine Member-Funktionen aufrufen<br />
- Du kannst auf keine Member zugreifen<br />
- Du kannst keine Referenzen auf diese Klasse nutzen</p>
<p>Dies geht alles erst, wenn die Definition der Klasse bekannt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904313</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Sat, 29 May 2010 22:33:44 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzeiger on Sat, 29 May 2010 22:39:04 GMT]]></title><description><![CDATA[<p>Du kannst mit Zeigern auch virtuell arbeiten (was das ist, erkläre ich zu dieser späten Stunde nicht mehr).</p>
<p>Außerdem kannst du damit in einer Klasse ein Element derselben Klasse speichern (was auch schon aus Jochens Beitrag hervorging), damit kannst du z.B. Baumstrukturen erstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904316</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 29 May 2010 22:39:04 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzeiger on Sun, 30 May 2010 06:38:03 GMT]]></title><description><![CDATA[<p>Vor allem legt man auch Objekte per new auf dem 'free store' an, damit sie länger als der aktuelle Gültigkeitsbereich leben.</p>
<pre><code class="language-cpp">void foo()
{
  myclass * A = new myclass;
  myclass B;
  ...
} // B wird automatisch gelöscht. Die Instanz, auf die A zeigte lebt noch.
</code></pre>
<p>Das Objekt liegt im Speicher bis es explizit mit <code>delete</code> gelöscht wird.<br />
Und zu beachten ist, dass gerade Anfänger viel zu häufig mit Zeigern rumhantieren obwohl es überhaupt nicht nötig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904353</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 30 May 2010 06:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzeiger on Sun, 30 May 2010 09:16:47 GMT]]></title><description><![CDATA[<p>Janjan schrieb:</p>
<blockquote>
<p>...<br />
- Du kannst keine Referenzen auf diese Klasse nutzen</p>
<p>Dies geht alles erst, wenn die Definition der Klasse bekannt ist.</p>
</blockquote>
<p>Referenzen kannst du ebenfalls soweit benutzen, wie es mit Zeigern geht.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24425">@Leswile</a><br />
Zeiger kannst du auch sonst bei Gelegenheiten benutzen. Z.b wenn du eine Auswahl von Instanzen hast und auf eine Verweisen willst.</p>
<pre><code class="language-cpp">A a1 (/*parameter*/;
A a2 (/*parameter*/);

A* a = 0;
switch (user_input)
{
 case 0: a = &amp;a1; break;
 case 1: a = &amp;a2; break;
 //...
}
a-&gt;foo();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1904388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904388</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 30 May 2010 09:16:47 GMT</pubDate></item></channel></rss>