<?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[Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen?]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>leider fällt mir kein besserer Betreff ein, vielleicht wurde das auch schon mal gefragt (konnte leider noch nix dazu finden, bitte einfach drauf hinweisen).</p>
<p>Folgendes ist mein Problem:</p>
<p>Ich habe eine Klasse PointC zur Abbildung von Punkten. Neben dem Default-Konstruktor gibt es noch einen mit (int x, int y) zur Initialisierung mit entsprechenden Koordinaten. Nun habe ich eine andere Klasse, deren Objekte eine Referenz auf die Klasse PointC enthalten.<br />
Diese Referenz soll während des Programmverlaufes immer wieder mal auf eine andere Instanz der Punkt-Klasse zeigen (Punkte sind unveränderlich, habe dies aber nicht mit speziellen Konstrukten abgebildet, sondern nur Setter und Getter weggelassen und die Koordinatenvariablen private gemacht).<br />
Damit jeder Punkt immer gültige Werte hat, möchte ich die Referenz der anderen Klasse in der Initialisierungsliste gleich mit dem Konstruktor, welcher die Variablen enthält aufrufen. Das klappt aber leider nicht (eine andere Möglichkeit wäre natürlich, im Default-Konstruktor x und y mit 0 zu initialisieren).</p>
<p>Folgendes hab ich probiert:</p>
<pre><code>OtherClassC::OtherClassC() : myPoint(0,0)
</code></pre>
<p>Das mag der GCC leider nicht (kommt wohl mit dem Komma nicht klar). Die Frage ist: Geht so etwas überhaupt? Wenn ja, wie?</p>
<p>Vielen Dank schon mal!</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325179/wie-objekt-von-klasse-mit-membern-in-initialisierungsliste-anlegen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 15:20:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325179.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Apr 2014 09:10:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Fri, 18 Apr 2014 09:10:28 GMT]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>leider fällt mir kein besserer Betreff ein, vielleicht wurde das auch schon mal gefragt (konnte leider noch nix dazu finden, bitte einfach drauf hinweisen).</p>
<p>Folgendes ist mein Problem:</p>
<p>Ich habe eine Klasse PointC zur Abbildung von Punkten. Neben dem Default-Konstruktor gibt es noch einen mit (int x, int y) zur Initialisierung mit entsprechenden Koordinaten. Nun habe ich eine andere Klasse, deren Objekte eine Referenz auf die Klasse PointC enthalten.<br />
Diese Referenz soll während des Programmverlaufes immer wieder mal auf eine andere Instanz der Punkt-Klasse zeigen (Punkte sind unveränderlich, habe dies aber nicht mit speziellen Konstrukten abgebildet, sondern nur Setter und Getter weggelassen und die Koordinatenvariablen private gemacht).<br />
Damit jeder Punkt immer gültige Werte hat, möchte ich die Referenz der anderen Klasse in der Initialisierungsliste gleich mit dem Konstruktor, welcher die Variablen enthält aufrufen. Das klappt aber leider nicht (eine andere Möglichkeit wäre natürlich, im Default-Konstruktor x und y mit 0 zu initialisieren).</p>
<p>Folgendes hab ich probiert:</p>
<pre><code>OtherClassC::OtherClassC() : myPoint(0,0)
</code></pre>
<p>Das mag der GCC leider nicht (kommt wohl mit dem Komma nicht klar). Die Frage ist: Geht so etwas überhaupt? Wenn ja, wie?</p>
<p>Vielen Dank schon mal!</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2395230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2395230</guid><dc:creator><![CDATA[Reth]]></dc:creator><pubDate>Fri, 18 Apr 2014 09:10:28 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Fri, 18 Apr 2014 11:10:07 GMT]]></title><description><![CDATA[<p>Reth schrieb:</p>
<blockquote>
<p>Folgendes ist mein Problem:</p>
<p>blah blah blah</p>
</blockquote>
<p>warum so viel blah blah statt ein paar Programmzeilen, aus denen man erkennen kann, was du vor hast?</p>
<blockquote>
<p>Das mag der GCC leider nicht (kommt wohl mit dem Komma nicht klar).</p>
</blockquote>
<p>Fehlermeldungen kann man kopieren und hier einfügen. Zusammen mit dem Programmcode ist dann meistens klar, was nicht geht.</p>
<p>Wenn ich dich richtig verstehe willst du aus einem Objekt auf verschiedene wechselnde existierende Punktobjekte verweisen. Dazu musst du Pointer verenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2395258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2395258</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 18 Apr 2014 11:10:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Fri, 18 Apr 2014 12:31:08 GMT]]></title><description><![CDATA[<p>Reth schrieb:</p>
<blockquote>
<p>Folgendes hab ich probiert:</p>
<pre><code>OtherClassC::OtherClassC() : myPoint(0,0)
</code></pre>
</blockquote>
<pre><code>OtherClassC::OtherClassC() : myPoint(0,0) { }
// guckst du -----------------------------^^^
</code></pre>
<p>Reth schrieb:</p>
<blockquote>
<p>Diese Referenz soll während des Programmverlaufes immer wieder mal auf eine andere Instanz der Punkt-Klasse zeigen (Punkte sind unveränderlich, habe dies aber nicht mit speziellen Konstrukten abgebildet, sondern nur Setter und Getter weggelassen und die Koordinatenvariablen private gemacht).</p>
</blockquote>
<p>Du weisst schon dass man Referenzen nicht &quot;umbiegen&quot; kann, ja? Und dass Referenzen in C++ ein Objekt nicht am Leben halten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2395274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2395274</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 18 Apr 2014 12:31:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Thu, 01 May 2014 13:04:30 GMT]]></title><description><![CDATA[<p>Danke für die Hilfe!</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Du weisst schon dass man Referenzen nicht &quot;umbiegen&quot; kann, ja? Und dass Referenzen in C++ ein Objekt nicht am Leben halten...</p>
</blockquote>
<p>Ja, das ist mir bekannt, hab ich aber wohl leider wieder außer 8 gelassen. D.h., eine Referenz würde hier gar nicht funktionieren.</p>
<p>Habe folgendes Problem:<br />
In einer Klasse habe ich als Member eine Referenz auf ein Objekt der Klasse Punkt. Die hab ich gemacht, damit von allen Methoden heraus daruf zugegriffen werden kann.<br />
Nun möchte ich dieser Referenz im Programmverlauf immer wieder ein anderes Objekt vom Typ Punkt zuweisen. Das klappt dann aber wohl nicht, wenn ich Dich und die nachgeschlagenen anderen Quellen zum Thema Referenz richtig verstehe.</p>
<p>Was passiert denn wenn ich sowas machen würde:</p>
<pre><code>// header
class MyClass1
{
    ...
    PointC&amp; point;

    void receivePoint();
    void usePoint();
    ...
}

// impl.; point wurde mit einem Objekt und den Koordinaten 0,0 initialisiert
class MyClass1::receivePoint(const PointC&amp; newPoint)
{
    point = newPoint;
}
</code></pre>
<p>Was würde denn dann an der Stelle point = newPoint; genau passieren?<br />
Und wie sollte ich dann das gewünschte Verhalten implementieren? Mir fällt da nur die Nutzung eines Zeigers ein. Allerdings frage ich mich dann schon, wofür Referenzen genutzt werden sollen, außer für CallByReferenzce-Aufrufe (habe natürlich schon über Vorteile und Anwendungsgebiete von Referenzen gelesen, aber für mich bisher nur wenige identifiziert im Vgl. zur Nutzung von Zeigern)?</p>
<p>Danke schon mal!<br />
Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396977</guid><dc:creator><![CDATA[Reth]]></dc:creator><pubDate>Thu, 01 May 2014 13:04:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Thu, 01 May 2014 15:49:03 GMT]]></title><description><![CDATA[<blockquote>
<p>Nun möchte ich dieser Referenz im Programmverlauf immer wieder ein anderes Objekt vom Typ Punkt zuweisen.</p>
</blockquote>
<p>Das heißt, du willst einen <strong>Zeiger</strong>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396996</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 01 May 2014 15:49:03 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Thu, 01 May 2014 17:55:18 GMT]]></title><description><![CDATA[<p>Tja, dann brauch ich wohl einen. Aber was ist mit meinen anderen Fragen (was passiert bei der Zuweisung im Bsp. und wofür kann ich noch Referenzen nutzen außer für CallByReference)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397013</guid><dc:creator><![CDATA[Reth]]></dc:creator><pubDate>Thu, 01 May 2014 17:55:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Thu, 01 May 2014 18:29:27 GMT]]></title><description><![CDATA[<p>Reth schrieb:</p>
<blockquote>
<p>Was würde denn dann an der Stelle point = newPoint; genau passieren?</p>
</blockquote>
<p>Eine ganz normale Zuweisung. Der Operator <code>MyClass1::operator=</code> wird aufgerufen. Kannst ihn ja mals selbst implementieren und dann ein Breakpoint setzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397016</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 01 May 2014 18:29:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Thu, 01 May 2014 18:59:37 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Eine ganz normale Zuweisung. Der Operator <code>MyClass1::operator=</code> wird aufgerufen. Kannst ihn ja mals selbst implementieren und dann ein Breakpoint setzen.</p>
</blockquote>
<p>Aber was steht danach denn im LVALUE der Zuweisung? Diese ist zuvor ja die Referenz auf ein Punkt-Objekt und ihr wird ein anderes Punktobjekt zugewiesen.<br />
Welches der beiden Objekte verbirgt sich denn dann hinter der Referenz nach der Zuweisung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397018</guid><dc:creator><![CDATA[Reth]]></dc:creator><pubDate>Thu, 01 May 2014 18:59:37 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Fri, 02 May 2014 07:07:23 GMT]]></title><description><![CDATA[<p>Reth schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>Eine ganz normale Zuweisung. Der Operator <code>MyClass1::operator=</code> wird aufgerufen. Kannst ihn ja mals selbst implementieren und dann ein Breakpoint setzen.</p>
</blockquote>
<p>Aber was steht danach denn im LVALUE der Zuweisung? Diese ist zuvor ja die Referenz auf ein Punkt-Objekt und ihr wird ein anderes Punktobjekt zugewiesen.<br />
Welches der beiden Objekte verbirgt sich denn dann hinter der Referenz nach der Zuweisung?</p>
</blockquote>
<p>Ich glaube du hast Referenzen nicht ganz verstanden. Eine Referenz ist nichts anderes als ein alternativer Name (Aliasname) für eine Variable).</p>
<pre><code>int int_variable = 123;
int&amp; schnuckiputz = int_variable;

int der_neue_wert = 987;
</code></pre>
<p>Ob du nun <code>int_variable=int der_neue_wert</code> oder <code>schnuckiputz=der_neue_wert</code> schreibst, ist egal. Du hast für eine Variable zwei Namen, <code>int_variable</code> und <code>schnuckiputz</code> . Welchen Namen du nun für die Zuweisung oder für irgendwas anderes nimmst, ist scheiß egal. Logischerweise bedeutet das dann auch, dass eine Referenz kein Objekt ist (also kein Speicherplatz belegt), sondern - wie gesagt - nur ein Kosename ist. Das bedeutet auch, dass du einer <em>Referenz</em> niemals etwas zuweisen kannst, sie somit auch niemals umbiegen kannst.</p>
<p>Ein Zeiger dagegen ist ein Objekt, er benötigt Speicher, z.B. 4Byte oder 8Byte. Darum sagt man auch manchmal Zeigervariable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397056</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 02 May 2014 07:07:23 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Sat, 03 May 2014 18:04:33 GMT]]></title><description><![CDATA[<p>Alles klar, danke.</p>
<p>Wenn ich das nun richtig verstehe, wird dann bei meiner Zuweisung hier:</p>
<pre><code>point = newPoint;
</code></pre>
<p>Der =-Operator der Klasse PointC auf dem Objekt, das sich inter point verbirgt ausgeführt und es werden die Werte aus dem Objekt newPoint zugewiesen.</p>
<p>Sehe ich das so richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397243</guid><dc:creator><![CDATA[Reth]]></dc:creator><pubDate>Sat, 03 May 2014 18:04:33 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Objekt von Klasse mit Membern in Initialisierungsliste anlegen? on Sun, 04 May 2014 17:05:58 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Reth schrieb:</p>
<blockquote>
<p>Was würde denn dann an der Stelle point = newPoint; genau passieren?</p>
</blockquote>
<p>Eine ganz normale Zuweisung. Der Operator <s>MyClass1</s>PointC::operator= wird aufgerufen. Kannst ihn ja mals selbst implementieren und dann ein Breakpoint setzen.</p>
</blockquote>
<p>Korrektur</p>
<p>Reth schrieb:</p>
<blockquote>
<p>Wenn ich das nun richtig verstehe, wird dann bei meiner Zuweisung hier:</p>
<pre><code>point = newPoint;
</code></pre>
<p>Der =-Operator der Klasse PointC auf dem Objekt, das sich inter point verbirgt ausgeführt und es werden die Werte aus dem Objekt newPoint zugewiesen.</p>
<p>Sehe ich das so richtig?</p>
</blockquote>
<p>Ja das ist absolut richtig. <code>point.operator=(newPoint);</code> wird gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2397348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2397348</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 04 May 2014 17:05:58 GMT</pubDate></item></channel></rss>