<?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[Konstruktor und &amp;quot;this&amp;quot;-Verständnisfrage]]></title><description><![CDATA[<p>Erstmal Hallo an alle! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
<p>Ich habe eine kleine Frage, vielleicht könnt ihr mir da behilflich sein. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":]"
      alt="🙂"
    /></p>
<p>Ich verwende das struct COORD aus der windows.h:</p>
<pre><code class="language-cpp">typedef struct _COORD {
  SHORT X;
  SHORT Y;
} COORD, *PCOORD;
</code></pre>
<p>Dieses nutze ich als Membervariable einer Klasse: m_dwPos<br />
Die Werte X und Y möchte ich nun über den Konstruktor möglichst geschickt zuweißen. Bei einfachen Datentypen kann man ja diese verkürzte Form nutzen: (Angenommen meine Membervariablen wären vom Typ short.)</p>
<pre><code class="language-cpp">CTest::CTest(short nX, short nY) :
    m_nX(nX),
    m_nY(nY)
{
}
</code></pre>
<p>Kann man dies auch irgendwie für ein struct nutzen oder ist es hier eine derarte Implementierung geschickter:</p>
<pre><code class="language-cpp">CTest::CTest(short nX, short nY)
{
    this-&gt;m_dwPos.X = nX;
    this-&gt;m_dwPos.Y = nY;
}
</code></pre>
<p>Dann hätte ich noch eine kleine Verständnisfrage:<br />
In der Implementierung der Klassenfunktionen nutze ich stehts den this-&gt;-Zeiger um auf Klassenvariablen etc. zuzugreifen, da dadurch ja das aktuelle Objekt/Instanz der Klasse angesprochen wird. Ist das korrekt?<br />
Oder ist es sauberer diese mittels Klassenname:: aufzurufen?`</p>
<p>Vielen Dank schonmal für eure Hilfe. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212260/konstruktor-und-quot-this-quot-verständnisfrage</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 17:24:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212260.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 May 2008 20:31:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktor und &amp;quot;this&amp;quot;-Verständnisfrage on Sat, 03 May 2008 20:31:45 GMT]]></title><description><![CDATA[<p>Erstmal Hallo an alle! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
<p>Ich habe eine kleine Frage, vielleicht könnt ihr mir da behilflich sein. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":]"
      alt="🙂"
    /></p>
<p>Ich verwende das struct COORD aus der windows.h:</p>
<pre><code class="language-cpp">typedef struct _COORD {
  SHORT X;
  SHORT Y;
} COORD, *PCOORD;
</code></pre>
<p>Dieses nutze ich als Membervariable einer Klasse: m_dwPos<br />
Die Werte X und Y möchte ich nun über den Konstruktor möglichst geschickt zuweißen. Bei einfachen Datentypen kann man ja diese verkürzte Form nutzen: (Angenommen meine Membervariablen wären vom Typ short.)</p>
<pre><code class="language-cpp">CTest::CTest(short nX, short nY) :
    m_nX(nX),
    m_nY(nY)
{
}
</code></pre>
<p>Kann man dies auch irgendwie für ein struct nutzen oder ist es hier eine derarte Implementierung geschickter:</p>
<pre><code class="language-cpp">CTest::CTest(short nX, short nY)
{
    this-&gt;m_dwPos.X = nX;
    this-&gt;m_dwPos.Y = nY;
}
</code></pre>
<p>Dann hätte ich noch eine kleine Verständnisfrage:<br />
In der Implementierung der Klassenfunktionen nutze ich stehts den this-&gt;-Zeiger um auf Klassenvariablen etc. zuzugreifen, da dadurch ja das aktuelle Objekt/Instanz der Klasse angesprochen wird. Ist das korrekt?<br />
Oder ist es sauberer diese mittels Klassenname:: aufzurufen?`</p>
<p>Vielen Dank schonmal für eure Hilfe. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502794</guid><dc:creator><![CDATA[SilverOne06]]></dc:creator><pubDate>Sat, 03 May 2008 20:31:45 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor und &amp;quot;this&amp;quot;-Verständnisfrage on Sat, 03 May 2008 20:40:02 GMT]]></title><description><![CDATA[<p>Klassenname::variablenname gilt nur für statische variablen. Ansonsten ist ein this-&gt;variablenname nicht nötig, du kannst einfach nur variablenname schreiben.<br />
this-&gt; brauchst du nur (soweit ich das überblicke) wenn zB eine lokale variable den gleichen namen wie deine member-variable hat. So kannst du die unterscheiden. Oder für sowas:</p>
<pre><code class="language-cpp">struct Klasse
{
    static int statischeVariable;
    int    nichtstatischeVariable;

    void tuWasGeniales(int);
};

int Klasse::statischeVariable = 18;

void machIrgendwas(Klasse*);

void Klasse::tuWasGeniales(int v)
{
     nichtstatischeVariable = v;
     //oder
     this-&gt;nichtstatischeVariable = v;

     statischeVariable = 23823;

     machIrgendwas(this);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1502798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502798</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Sat, 03 May 2008 20:40:02 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor und &amp;quot;this&amp;quot;-Verständnisfrage on Sat, 03 May 2008 20:42:30 GMT]]></title><description><![CDATA[<p>SilverOne06 schrieb:</p>
<blockquote>
<p>Die Werte X und Y möchte ich nun über den Konstruktor möglichst geschickt zuweisen.</p>
</blockquote>
<p>Ne das geht leider nicht, da die Struktur keinen Konstruktor hat, der Werte entgegennimmt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":-/"
      alt="😕"
    /></p>
<p>SilverOne06 schrieb:</p>
<blockquote>
<p>Dann hätte ich noch eine kleine Verständnisfrage:<br />
In der Implementierung der Klassenfunktionen nutze ich stehts den this-&gt;-Zeiger um auf Klassenvariablen etc. zuzugreifen, da dadurch ja das aktuelle Objekt/Instanz der Klasse angesprochen wird. Ist das korrekt?<br />
Oder ist es sauberer diese mittels Klassenname:: aufzurufen?`</p>
</blockquote>
<p>Du kannst auch alles davor weglassen, also einfach nur &quot;m_dwPos.X = ...&quot; schreiben; dein Kürzel m_ sollte ja schon darauf hinweisen, dass es eine Member-Variable ist (für das visuelle Argument).</p>
<p>SilverOne06 schrieb:</p>
<blockquote>
<p>Vielen Dank schonmal für eure Hilfe. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
</blockquote>
<p>Gern geschehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>edit: Mist, a little too late..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502800</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 03 May 2008 20:42:30 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor und &amp;quot;this&amp;quot;-Verständnisfrage on Sat, 03 May 2008 20:44:42 GMT]]></title><description><![CDATA[<p>Zu 1.)<br />
Man könnte zwar folgendes machen:</p>
<pre><code class="language-cpp">CTest(short nX, short nY) : m_dwPos(x, y)
</code></pre>
<p>...aber das geht bei der COORD-Struktur leider nicht, da kein expliziter Konstruktor dafür definiert wurde. Von daher ist Deine Lösung mit der Wertzuweisung an jedes einzelne Element der COORD-Struktur innerhalb Deines Klassenkonstruktors schon richtig so, allerdings kannst Du in dem Fall <code>this</code> weglassen. (Siehe obige Erklärung)</p>
<pre><code class="language-cpp">CTest::CTest(short nX, short nY)
{
    m_dwPos.X = nX;
    m_dwPos.Y = nY;
}
</code></pre>
<p>Edit: Mist, noch mehr little to late! :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502801</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Sat, 03 May 2008 20:44:42 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor und &amp;quot;this&amp;quot;-Verständnisfrage on Sat, 03 May 2008 21:00:27 GMT]]></title><description><![CDATA[<p>Wow, also ich hätte nicht erwartet, dass man hier gleich SO schnell so viele kompetente Antworten bekommt! Vielen Dank!</p>
<p>Das mit dem this Zeiger sieht in Kombination mit dem Prefix wirklich etwas übertrieben aus. ^^ Ich steh eben noch ziemlich am Anfang und da möcht ich mir nicht gleich was unschönes bzw. falsches angewöhnen, deswegen wollt ich das mal bestätigt haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502814</guid><dc:creator><![CDATA[SilverOne06]]></dc:creator><pubDate>Sat, 03 May 2008 21:00:27 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor und &amp;quot;this&amp;quot;-Verständnisfrage on Sat, 03 May 2008 21:54:20 GMT]]></title><description><![CDATA[<p>SilverOne06 schrieb:</p>
<blockquote>
<p>Das mit dem this Zeiger sieht in Kombination mit dem Prefix wirklich etwas übertrieben aus. ^^ Ich steh eben noch ziemlich am Anfang und da möcht ich mir nicht gleich was unschönes bzw. falsches angewöhnen, deswegen wollt ich das mal bestätigt haben.</p>
</blockquote>
<p>Sieh es so... Was unschön ist lässt sich hierbei streiten.</p>
<p>Ich persönlich habe mich schon seit langer Zeit von der UN (Ungarischen Notation) die du hier verwendest, verabschiedet [Gründe gibt es viele, und du wirst hierzu viele Pros und Contras hören]. Und dann kann this-&gt; Sinn machen.</p>
<p>Wenn du der UN treu bleiben willst, bitte ich dich nur um eins: verwende trotz der Präfixe bitte sprechende Namen.</p>
<p>Dein Beispiel ohne UN:</p>
<pre><code class="language-cpp">Test::Test(short xPosition, short yPosition) // Oder wenn aus Kontext ersichtbar: nur x statt xPosition
{
    this-&gt;position.X = xPosition;
    this-&gt;position.Y = yPosition;
}
</code></pre>
<p>Überleg dir selber was du als lesbarer im Code empfindest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502837</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sat, 03 May 2008 21:54:20 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor und &amp;quot;this&amp;quot;-Verständnisfrage on Sat, 03 May 2008 22:18:06 GMT]]></title><description><![CDATA[<p>mikey schrieb:</p>
<blockquote>
<p>Zu 1.)<br />
Man könnte zwar folgendes machen:</p>
<pre><code class="language-cpp">CTest(short nX, short nY) : m_dwPos(x, y)
</code></pre>
<p>...aber das geht bei der COORD-Struktur leider nicht, da kein expliziter Konstruktor dafür definiert wurde.</p>
</blockquote>
<p>Da ist soweit richtig aber nicht zu Ende gedacht. Es gibt schließlich noch andere Methoden, die in einem geeignet initialisierten Objekt resultieren. Falls uns eine spezielle Memberfunktion (a.k.a. Konstruktor) nicht zur Verfügung steht, behelfen wir uns eben mit einer normalen Funktion:</p>
<pre><code class="language-cpp">COORD make_COORD(short nX, short nY)
{
    COORD x = { nX, nY };
    return x;
}

CTest(short nX, short nY) : m_dwPos(make_COORD(x, y)) {}
</code></pre>
<p>Das ist nur geringfügig ausführlicher, als ein Konstruktor es wäre, und kein bisschen weniger effizient.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502843</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 03 May 2008 22:18:06 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor und &amp;quot;this&amp;quot;-Verständnisfrage on Sun, 04 May 2008 02:04:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich bin mir selbst noch nicht ganz sicher, ob ich die UN nun verwenden möchte oder nicht. Dadurch wird natürlich alles etwas kryptischer und der Einwand mit den sprechenden Namen ist berechtigt, werd ich in Zukunft berücksichtigen.</p>
<p>Habt ihr vielleicht ein paar Seiten bzw. Theards mit Vorschlägen zu Konventionen, die ihr vllt. sogar selbst so übernehmt? Klar, das ist natürlich jedem selbst überlassen und ich denke mal, mit der Zeit entwickelt man sicherlich auch etwas seinen eigenen Stil, nur am Anfang ist es nicht schlecht, wenn man was hat, an das man sich halten kann.<br />
Also nur für den Fall das jemand gerade was passendes zur Hand hat, Google etc. werde ich natürlich selber bemühen.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a>, ist natürlich eine Lösung. Danke. Aufjeden Fall gut das Konzept im Hinterkopf zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502876</guid><dc:creator><![CDATA[SilverOne06]]></dc:creator><pubDate>Sun, 04 May 2008 02:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor und &amp;quot;this&amp;quot;-Verständnisfrage on Sun, 04 May 2008 08:56:53 GMT]]></title><description><![CDATA[<p>SilverOne06 schrieb:</p>
<blockquote>
<p>Also nur für den Fall das jemand gerade was passendes zur Hand hat, Google etc. werde ich natürlich selber bemühen.</p>
</blockquote>
<p>Schau dir mal den folgenden Artikel an (Interessant sind imho hauptsächlich der Punkt Kritik und die Links die sowohl die UN positiv wie auch negativ darstellen):<br />
<a href="http://de.wikipedia.org/wiki/Ungarische_Notation" rel="nofollow">http://de.wikipedia.org/wiki/Ungarische_Notation</a><br />
(Mein Eigener Stil ähnelt den Namenskonventionen wie in C#, die dort auch als Link aufgeführt sind).</p>
<p>Wegen Benennungen ohne UN: In der Regel wird einfach sprechend benannt, manche lassen einen kleinen UN-Bruchstück bestehen (so etwas wie m_ für Member oder p_ für Zeiger) andere benutzen hier teilweise das this-&gt; (Was unter VC den Vorteil hat das man die Member meist auch zur Auswahl bekommt ;p).</p>
<p>Und ja, sowas wie Präfixe habe ich (sehr selten zwar) auch... Bei boolischen Variablen steht z.B. bei mir meist ein &quot;is&quot; davor (isNew, isEmpty) da ich das als allgemein lesbar empfinde und Ausdrücke wie &quot;if(isNew)&quot; fast schon wie normale Sprache lesbar sind.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1502923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1502923</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 04 May 2008 08:56:53 GMT</pubDate></item></channel></rss>