<?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[Seltsames Referenz Verhalten ...]]></title><description><![CDATA[<p>... zumindest aus meiner Sicht.</p>
<p>Ich habe eine Funktion, welche eine Referenz auf ein Objekt zurückgibt. Das Objekt ist eine Struktur. In dieser Struktur schreibe ich, doch im eigentlichen Objekt, werden die Änderungen nicht übernommen. Kleines Codebeispiel:</p>
<pre><code class="language-cpp">SRank&amp; refRank = SRank();

// ...
for(int i = 0; i &lt; m_RankArray.GetCount(); ++i)
{
    refRank = m_RankArray.GetAt(i);

    if(refRank.pTeam == pCheckTeam)
    {
        refRank.nGoalsmade += 1;
        // ...
    }
}
</code></pre>
<p>m_RankArray ist eine CArray Klasse aus der MFC, spielt derzeit keine Rolle. GetAt(i) liefert eine Referenz auf ein Struct SRank zurück an der Stelle i.<br />
Wenn ich jetzt eben z.b. nGoalsmade in der Struktur verändere, dann wird es im Original seltsamerweise nicht auch verändert. Kann mir da jemand sagen, woran das liegen könnte?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/153887/seltsames-referenz-verhalten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 21:32:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/153887.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Jul 2006 14:13:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Seltsames Referenz Verhalten ... on Fri, 21 Jul 2006 14:13:01 GMT]]></title><description><![CDATA[<p>... zumindest aus meiner Sicht.</p>
<p>Ich habe eine Funktion, welche eine Referenz auf ein Objekt zurückgibt. Das Objekt ist eine Struktur. In dieser Struktur schreibe ich, doch im eigentlichen Objekt, werden die Änderungen nicht übernommen. Kleines Codebeispiel:</p>
<pre><code class="language-cpp">SRank&amp; refRank = SRank();

// ...
for(int i = 0; i &lt; m_RankArray.GetCount(); ++i)
{
    refRank = m_RankArray.GetAt(i);

    if(refRank.pTeam == pCheckTeam)
    {
        refRank.nGoalsmade += 1;
        // ...
    }
}
</code></pre>
<p>m_RankArray ist eine CArray Klasse aus der MFC, spielt derzeit keine Rolle. GetAt(i) liefert eine Referenz auf ein Struct SRank zurück an der Stelle i.<br />
Wenn ich jetzt eben z.b. nGoalsmade in der Struktur verändere, dann wird es im Original seltsamerweise nicht auch verändert. Kann mir da jemand sagen, woran das liegen könnte?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1101857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1101857</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 21 Jul 2006 14:13:01 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Referenz Verhalten ... on Fri, 21 Jul 2006 14:16:11 GMT]]></title><description><![CDATA[<p>Referenzen kann man nicht kopieren. Du kopierst den Inhalt des Objektes dessen Referenz GetAt(i) zurückgibt auf das Objekt dessen Referenz SRank() zurückgegeben hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1101860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1101860</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 21 Jul 2006 14:16:11 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Referenz Verhalten ... on Fri, 21 Jul 2006 15:36:22 GMT]]></title><description><![CDATA[<p>Das heisst:</p>
<pre><code class="language-cpp">CIrgendwas&amp; M::Funktion()
{
    return m_Irgendwas;
}

CIrgendwas&amp; a = CIrgendwas();
a = Funktion();

// Ist ungleich ...

CIrgendwas&amp; a = Funktion();
</code></pre>
<p><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=":confused:"
      alt="😕"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1101903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1101903</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 21 Jul 2006 15:36:22 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Referenz Verhalten ... on Fri, 21 Jul 2006 16:18:04 GMT]]></title><description><![CDATA[<p>Exakt.</p>
<p>Eine Referenz kann nur einmal initialisiert werden (und sie darf nicht nicht initialisiert werden). Danach hast Du einfach ein Objekt, bei dem die normale Zuweisungs-Semantik greift. Anders wäre aber auch schwer vorherzusehen, was Du möchtest. Stell Dir folgendes Beispiel vor:</p>
<pre><code class="language-cpp">int&amp; zahl() {
  static int zahl;
  return zahl;
}

int a = 10;
int&amp; x = zahl();

x = 10; // Ist noch eindeutig
x = a;  // Huch, möchtest Du die Referenz ändern damit x auf a zeigt, oder möchtest Du den Wert auf den x jetzt gerade zeigt ändern?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1101915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1101915</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 21 Jul 2006 16:18:04 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Referenz Verhalten ... on Mon, 24 Jul 2006 15:11:06 GMT]]></title><description><![CDATA[<p>Danke ... zwar spät, aber hatte leider viel zu tun. ^^</p>
<p>Noch kurz eine Frage. Und zwar durchlaufe ich in einem Programm immer viele Listen. Dies passiert in einem Aktualisierungszyklus, welcher möglichst schnell ablaufen sollte. Meine Kopierkonstruktoren, bzw. kopieroperatoren sind aber teilweise sehr lang, da ich sehr grosse Klassen mit vielen Informationen habe. Deshalb kam ich auch auf die Idee eine Referenz zu erstellen. Nun muss ich aber für jedes Objekt die Referenz neu initialisieren.</p>
<pre><code class="language-cpp">for(...)
{
    CIrgendwas&amp; refIrgendwas = IrgendwasArray.GetAt(i);
}
</code></pre>
<p>Was braucht nun mehr Zeit?<br />
Das kopieren oder das anlegen der Referenz?<br />
Wie könnte ich das sinnvoll testen?<br />
Oder ist das ganze klar, was schneller ist?</p>
<p>Grüssli und nochmals danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103252</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 24 Jul 2006 15:11:06 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Referenz Verhalten ... on Mon, 24 Jul 2006 16:21:02 GMT]]></title><description><![CDATA[<p>Das Kopieren benötigt vermutlich mehr Zeit - zum Anlegen der Referenz muß nur die Adresse des Objekts hinterlegt werden (und die implizite Dereferenzierung, wenn du darauf zugreifen willst, dürfte auch nicht sehr lange dauern).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103311</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 24 Jul 2006 16:21:02 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Referenz Verhalten ... on Mon, 24 Jul 2006 22:16:20 GMT]]></title><description><![CDATA[<p>ok danke ... Wieder mal einiges gelernt ^^</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103507</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 24 Jul 2006 22:16:20 GMT</pubDate></item></channel></rss>