<?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[Frage zu Attributen und Gültigkeit]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Frage:</p>
<p>Wenn ich ein Objekt erzeugt:</p>
<pre><code class="language-cpp">Pferd pferde[10];
</code></pre>
<p>(hier wird der geänderte Standardkonstruktor aufgerufen, welcher Defaultwerte setzt)</p>
<p>und anschließend im Objekt pferde[0] die Daten setze:</p>
<pre><code class="language-cpp">pferde[0].setDaten(&quot;Blacky&quot;,0,1);
</code></pre>
<p>Dann habe ich in der main eine Methode erstellt, die die Daten in eine andere Klasse übergibt: (Klasse Reitstall)</p>
<pre><code class="language-cpp">Reitstall stall;

stall.irgendwas(pferde[0]);
</code></pre>
<p>Wenn ich dann hier in der Klasse stall den Namen des Pferdes ändere (ich habe einfach mal die Attribute der Pferde auf public gesetzt. Das ist zwar nicht korrekt, allerdings will ich den Fehler finden) dann auch geändert</p>
<pre><code class="language-cpp">void irgendwas (Pferd pferdi) {

pferdi.name=&quot;BLABLABLA&quot;;
cout &lt;&lt; pferdi.name &lt;&lt;endl;
}
</code></pre>
<p>== &gt; Als Ausgabe erscheint BLABLABLA</p>
<p>Wenn ich dann nach dem Aufruf der Methode den Namen ausgeben möchte, dann erscheint allerdings wieder der ursprünglich Name:</p>
<pre><code class="language-cpp">stall.irgendwas(pferde[0]);

cout &lt;&lt;pferde[0].name &lt;&lt; endl;
</code></pre>
<p>Dann erscheint als Ausgabe &quot;Blacky&quot;</p>
<p>Hat jemand eine Ahnung warum das so ist?</p>
<p>Vielen Dank!</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278506/frage-zu-attributen-und-gültigkeit</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 05:15:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278506.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 07 Dec 2010 22:42:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Attributen und Gültigkeit on Tue, 07 Dec 2010 22:43:03 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Frage:</p>
<p>Wenn ich ein Objekt erzeugt:</p>
<pre><code class="language-cpp">Pferd pferde[10];
</code></pre>
<p>(hier wird der geänderte Standardkonstruktor aufgerufen, welcher Defaultwerte setzt)</p>
<p>und anschließend im Objekt pferde[0] die Daten setze:</p>
<pre><code class="language-cpp">pferde[0].setDaten(&quot;Blacky&quot;,0,1);
</code></pre>
<p>Dann habe ich in der main eine Methode erstellt, die die Daten in eine andere Klasse übergibt: (Klasse Reitstall)</p>
<pre><code class="language-cpp">Reitstall stall;

stall.irgendwas(pferde[0]);
</code></pre>
<p>Wenn ich dann hier in der Klasse stall den Namen des Pferdes ändere (ich habe einfach mal die Attribute der Pferde auf public gesetzt. Das ist zwar nicht korrekt, allerdings will ich den Fehler finden) dann auch geändert</p>
<pre><code class="language-cpp">void irgendwas (Pferd pferdi) {

pferdi.name=&quot;BLABLABLA&quot;;
cout &lt;&lt; pferdi.name &lt;&lt;endl;
}
</code></pre>
<p>== &gt; Als Ausgabe erscheint BLABLABLA</p>
<p>Wenn ich dann nach dem Aufruf der Methode den Namen ausgeben möchte, dann erscheint allerdings wieder der ursprünglich Name:</p>
<pre><code class="language-cpp">stall.irgendwas(pferde[0]);

cout &lt;&lt;pferde[0].name &lt;&lt; endl;
</code></pre>
<p>Dann erscheint als Ausgabe &quot;Blacky&quot;</p>
<p>Hat jemand eine Ahnung warum das so ist?</p>
<p>Vielen Dank!</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1991277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1991277</guid><dc:creator><![CDATA[Sören20]]></dc:creator><pubDate>Tue, 07 Dec 2010 22:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Attributen und Gültigkeit on Tue, 07 Dec 2010 22:49:19 GMT]]></title><description><![CDATA[<p>Bei pass-by-value wird eine Kopie des übergebenen Objekts angefertigt. Dieses wird am Ende der Funktion wieder zerstört und das Originalobjekt bekommt davon nichts mit. Wenn du das Originalobjekt verändern willst, sollte der Parameter eine Referenz sein: <code>void irgendwas (Pferd&amp; pferdi)</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1991278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1991278</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Tue, 07 Dec 2010 22:49:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Attributen und Gültigkeit on Tue, 07 Dec 2010 22:58:26 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>danke!</p>
<p>Wenn ich das Pferd mit &quot;new&quot; erzeut hätte, müsste ich dann auch</p>
<p>void irgendwas (Pferd&amp; pferdi)</p>
<p>oder geht dann auch</p>
<p>void irgendwas (Pferd pferdi)?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1991279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1991279</guid><dc:creator><![CDATA[Sören20]]></dc:creator><pubDate>Tue, 07 Dec 2010 22:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Attributen und Gültigkeit on Tue, 07 Dec 2010 23:33:42 GMT]]></title><description><![CDATA[<p>Ohne Referenz wird das Objekt immer kopiert. Wie es erzeugt wurde, ist nebensächlich.<br />
Ich vermute, du hast eine Java-Vergangenheit, daher:<br />
wenn du in C++ <code>Pferd pferd;</code> schreibst, dann erzeugst du damit bereits eine Pferd-Instanz.<br />
In Java ist das nur ein <em>Zeiger</em> auf Pferd und das Pferd selbst wird erst mit new erzeugt. In C++ sähe das z.B. so aus: <code>Pferd* pferd=new Pferd;</code><br />
Gleiches gilt natürlich, wenn Pferd als Parameter auftaucht: in Java wird da ein Pferd-Zeiger kopiert, in C++ dementsprechend ein Pferd-Objekt.</p>
<p>Als dritte Möglichkeit kannst du natürlich auch in C++ einen Zeiger übergeben:<br />
<code>void irgendwas (Pferd* pferdi)</code><br />
Das macht man normalerweise nur, wenn der Parameter auch null sein darf, was dann von der Funktion auch entsprechend behandelt werden sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1991285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1991285</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Tue, 07 Dec 2010 23:33:42 GMT</pubDate></item></channel></rss>