<?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änger] Verständnisproblem: Klassendeklarationen mit Pointern]]></title><description><![CDATA[<p>Hallo.</p>
<p>Bereite mich derzeit auf meine Klausur &quot;Einführung in die Informatik 1&quot; vor.<br />
Habe das dazu das ganze Skript meines Dozenten zusammengefasst/ergänzt.</p>
<p>Dabei treten im Skript selber immer wieder Implementierungen von verketteten Listen, Bäumen, Graphen etc in C++ auf.</p>
<p>Beispiel: Verkettete Liste</p>
<pre><code>class ListElem {
public:
   // Konstruktor
   ListElem(T∗  d) {
      next = NULL;
      data = d;
   }

   T∗          getData(void)         { return data; }
   void        setNext(ListElem∗  n) { next = n; }
   ListElem∗   getNext(void)         { return next; }

private:
   T∗  data;         // Zeiger auf Datenobjekt
   ListElem∗  next;  // Zeiger auf nächste Element

//Hinweis: Wir gehen im Folgenden immer von Daten vom Typ T∗ aus!
};
</code></pre>
<p>Laut meinem Wissensstand ist der Operator (abgesehen mal von der Multiplikation) dafür da um Pointer zu (de)referenzieren. Allerdings ein vorrangestellter *-Operator.</p>
<p>Ich hab mich über Klassen und Pointer/Referenzen eingelesen. An mehreren Stellen. Aber obige Code wird mir nicht klar.</p>
<p>Ist T* und ListElem* auch eine eigene, hier nicht weiter deklarierte Klasse?<br />
Und (T* d) im Konstruktor ein Parameter d vom Typ T*? Zeiger auf d?</p>
<p>Warum aber wird die Methode getData() auch mit Sternoperator deklariert?</p>
<p>Das ganze verwirrt mich zunehmend und wird im Verlauf des Skripts schlimmer.<br />
Denn der Code dort ist immer ähnlich aufgebaut, eben mit diesem Stern-Operator am Ende einer Klassedeklaration. Und normal stelle ich diesen doch eben der Variablen vorran.</p>
<p>Ich bitte untertänigst um Hilfe. <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>
<p>Gruß,<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/299158/anfänger-verständnisproblem-klassendeklarationen-mit-pointern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 13:31:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/299158.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Feb 2012 08:47:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Anfänger] Verständnisproblem: Klassendeklarationen mit Pointern on Sat, 04 Feb 2012 08:47:29 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Bereite mich derzeit auf meine Klausur &quot;Einführung in die Informatik 1&quot; vor.<br />
Habe das dazu das ganze Skript meines Dozenten zusammengefasst/ergänzt.</p>
<p>Dabei treten im Skript selber immer wieder Implementierungen von verketteten Listen, Bäumen, Graphen etc in C++ auf.</p>
<p>Beispiel: Verkettete Liste</p>
<pre><code>class ListElem {
public:
   // Konstruktor
   ListElem(T∗  d) {
      next = NULL;
      data = d;
   }

   T∗          getData(void)         { return data; }
   void        setNext(ListElem∗  n) { next = n; }
   ListElem∗   getNext(void)         { return next; }

private:
   T∗  data;         // Zeiger auf Datenobjekt
   ListElem∗  next;  // Zeiger auf nächste Element

//Hinweis: Wir gehen im Folgenden immer von Daten vom Typ T∗ aus!
};
</code></pre>
<p>Laut meinem Wissensstand ist der Operator (abgesehen mal von der Multiplikation) dafür da um Pointer zu (de)referenzieren. Allerdings ein vorrangestellter *-Operator.</p>
<p>Ich hab mich über Klassen und Pointer/Referenzen eingelesen. An mehreren Stellen. Aber obige Code wird mir nicht klar.</p>
<p>Ist T* und ListElem* auch eine eigene, hier nicht weiter deklarierte Klasse?<br />
Und (T* d) im Konstruktor ein Parameter d vom Typ T*? Zeiger auf d?</p>
<p>Warum aber wird die Methode getData() auch mit Sternoperator deklariert?</p>
<p>Das ganze verwirrt mich zunehmend und wird im Verlauf des Skripts schlimmer.<br />
Denn der Code dort ist immer ähnlich aufgebaut, eben mit diesem Stern-Operator am Ende einer Klassedeklaration. Und normal stelle ich diesen doch eben der Variablen vorran.</p>
<p>Ich bitte untertänigst um Hilfe. <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>
<p>Gruß,<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176649</guid><dc:creator><![CDATA[etern_r3]]></dc:creator><pubDate>Sat, 04 Feb 2012 08:47:29 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] Verständnisproblem: Klassendeklarationen mit Pointern on Sat, 04 Feb 2012 08:50:45 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">T∗
</code></pre>
<p>ist <strong>T</strong>*</p>
<p>Sorry, das bekomme ich irgendwie nicht in den Griff...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176650</guid><dc:creator><![CDATA[etern_r3]]></dc:creator><pubDate>Sat, 04 Feb 2012 08:50:45 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] Verständnisproblem: Klassendeklarationen mit Pointern on Sat, 04 Feb 2012 09:38:47 GMT]]></title><description><![CDATA[<p>Wie würdest du einen Pointer deklarieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176655</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 04 Feb 2012 09:38:47 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] Verständnisproblem: Klassendeklarationen mit Pointern on Sat, 04 Feb 2012 10:29:12 GMT]]></title><description><![CDATA[<p>etern_r3 schrieb:</p>
<blockquote>
<p>Denn der Code dort ist immer ähnlich aufgebaut, eben mit diesem Stern-Operator am Ende einer Klassedeklaration. Und normal stelle ich diesen doch eben der Variablen vorran.</p>
</blockquote>
<p>Eine Klassendeklaration ist sowas:</p>
<pre><code class="language-cpp">class Liste;
</code></pre>
<p>Ich glauben nicht, dass dort irgendwo mal ein Stern bei dir im Skript steht.</p>
<blockquote>
<pre><code class="language-cpp">private:
   T*  data;         // Zeiger auf Datenobjekt
   ListElem*  next;  // Zeiger auf nächste Element
</code></pre>
</blockquote>
<p>Es steht doch schon genau da, was es bedeutet. data ist ein Zeiger auf ein T. next ist ein Zeiger auf ein ListElem. Die Klasse ListElem hast Du uns gezeigt. T ist irgendein anderer Typ. Wahrscheinlich steht das in Deinem BEispiel irgendwo. Vermutlich ist T ein Templateparameter.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
struct List
{
 T* data;
};

void f()
{
  int i = 42;
  int* j = &amp;i;  // j ist ein Zeiger auf ein int. Wir können da die Adresse von i speichern.
  List&lt;int&gt; list;  // T ist jetzt int. 
  list.data = &amp;i;  // T* ist jetzt ein Zeiger auf ein int.
  int k = *list.data;  // * als Dereferenzierung. j wurde der Wert von i zugewiesen.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2176682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176682</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sat, 04 Feb 2012 10:29:12 GMT</pubDate></item></channel></rss>