<?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[Referenz Wert verschwindet]]></title><description><![CDATA[<p>Hallo mal wieder <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ^^<br />
Es fängt an mit einem Konstruktor:</p>
<pre><code>Aircraft* player = new Aircraft(textureHolder, Aircraft::TYPE_EAGLE);
</code></pre>
<p>Der so aussieht:</p>
<pre><code>Aircraft(const TextureHolder&amp; textureHolder, const Aircraft::Type&amp; type)
    :	mType(type),
	mSprite(textureHolder.getResource(toTextureID(type)))
{

}
</code></pre>
<p>toTextureFunktion:</p>
<pre><code>const Textures::ID&amp; Aircraft::toTextureID(const Aircraft::Type&amp; type)
{
	switch(type)
	{
	case Aircraft::Type::TYPE_EAGLE:
		return Textures::ID_EAGLE;
		break;
	case Aircraft::Type::TYPE_RAPTOR:
		return Textures::ID_RAPTOR;
		break;
	}
}
</code></pre>
<p>Bis hier hin geht auch alles gut.<br />
Nur bekommt der Parameter Identifier in der Funktion getResource aus der<br />
Klasse ResourceHolder einen Irrsinnigen wert wie 01A83912, obwohl es sich in meinem Fall um ein enum handelt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<pre><code>template &lt;typename Identifier, typename Resource&gt;
const Resource&amp; ResourceHolder&lt;Identifier, Resource&gt;::getResource(const Identifier&amp; id) const
{
	std::cout&lt;&lt;id;
	// Search fro the key
	auto found = mResourceMap.find(id);

	// If not found give a error message
	assert(found != mResourceMap.end());

	// Else return the resource
	return *found-&gt;second;
}
</code></pre>
<p>Warum geht das nicht (ich denke es hat irgendwas mit einem abgelaufenem Namensraum zu tun, aber ich finde den Logik Fehler nicht)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320270/referenz-wert-verschwindet</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 06:02:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320270.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Sep 2013 15:02:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 15:02:27 GMT]]></title><description><![CDATA[<p>Hallo mal wieder <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ^^<br />
Es fängt an mit einem Konstruktor:</p>
<pre><code>Aircraft* player = new Aircraft(textureHolder, Aircraft::TYPE_EAGLE);
</code></pre>
<p>Der so aussieht:</p>
<pre><code>Aircraft(const TextureHolder&amp; textureHolder, const Aircraft::Type&amp; type)
    :	mType(type),
	mSprite(textureHolder.getResource(toTextureID(type)))
{

}
</code></pre>
<p>toTextureFunktion:</p>
<pre><code>const Textures::ID&amp; Aircraft::toTextureID(const Aircraft::Type&amp; type)
{
	switch(type)
	{
	case Aircraft::Type::TYPE_EAGLE:
		return Textures::ID_EAGLE;
		break;
	case Aircraft::Type::TYPE_RAPTOR:
		return Textures::ID_RAPTOR;
		break;
	}
}
</code></pre>
<p>Bis hier hin geht auch alles gut.<br />
Nur bekommt der Parameter Identifier in der Funktion getResource aus der<br />
Klasse ResourceHolder einen Irrsinnigen wert wie 01A83912, obwohl es sich in meinem Fall um ein enum handelt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<pre><code>template &lt;typename Identifier, typename Resource&gt;
const Resource&amp; ResourceHolder&lt;Identifier, Resource&gt;::getResource(const Identifier&amp; id) const
{
	std::cout&lt;&lt;id;
	// Search fro the key
	auto found = mResourceMap.find(id);

	// If not found give a error message
	assert(found != mResourceMap.end());

	// Else return the resource
	return *found-&gt;second;
}
</code></pre>
<p>Warum geht das nicht (ich denke es hat irgendwas mit einem abgelaufenem Namensraum zu tun, aber ich finde den Logik Fehler nicht)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354671</guid><dc:creator><![CDATA[DuffCola]]></dc:creator><pubDate>Sun, 22 Sep 2013 15:02:27 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 15:11:45 GMT]]></title><description><![CDATA[<p>Du übergibst dem Airplane Airplane::TYPE_EAGLE.<br />
In der toTexture prüfst du, ob das entweder Airplane::<strong>Type</strong>::TYPE_EAGLE und Airplane::<strong>Type</strong>::TYPE_RAPTOR. Airplane::TYPE_EAGLE ist weder das eine, noch das andere. Fazit: &quot;zufälliger&quot; return Wert.<br />
Btw: Die obligatorische Frage: Wieso new? Und wenn new sein muss, wieso ohne Smartpointer?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354673</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 22 Sep 2013 15:11:45 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 15:28:49 GMT]]></title><description><![CDATA[<blockquote>
<p>abgelaufenem Namensraum</p>
</blockquote>
<p>Was bitte soll denn das sein?</p>
<blockquote>
<p>obwohl es sich in meinem Fall um ein enum handelt</p>
</blockquote>
<p>Wie sieht die Definition der Enumeration aus? Das würde mich interessieren.</p>
<p>Und mach mal aus</p>
<pre><code>std::cout&lt;&lt;id;
das hier:
std::cout &lt;&lt; &quot;\nID: &quot; &lt;&lt; id &lt;&lt; '\n';
</code></pre>
<blockquote>
<p>Fazit: &quot;zufälliger&quot; return Wert.</p>
</blockquote>
<p>Das gibt's ja gar nicht. Wenn ein <code>return</code> -Statement fehlt, dann crasht das Programm (zumindest bei mir) an dieser Stelle (abgesehen davon, dass es sowieso UB ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354675</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 22 Sep 2013 15:28:49 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 15:20:05 GMT]]></title><description><![CDATA[<p>Nathan, die zusätzliche Qualifizierung ist egal. Weißt du, wie Enumeratoren qualifiziert werden können?</p>
<pre><code>struct Airplane
{
    enum Type
    {
        A, B
    };
};

int main()
{
    Airplane::Type a = Airplane::A;
    Airplane::Type b = Airplane::Type::B;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2354676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354676</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 22 Sep 2013 15:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 15:24:16 GMT]]></title><description><![CDATA[<p>Ich erhalte beim gcc bei ints den Wert 1 als Rückgabe, bei doubles NaN.<br />
Auf einem anderen Compiler waren das aber durchaus zufällige Werte.</p>
<p>Edit: Das ist mir klar.<br />
Aber die einzige offensichtliche Erklärung wäre, dass es zwei komplett verschiedene enums gibt (vielleicht um etwas verschiedenes auszudrücken? Updatefehler*?), und der TE das veraltete/falsche genommen hatte. Die andere Erklärung wäre, dass sein Hantieren mit rohen Pointern schief geht und er den return Wert überschreibt.</p>
<p>*Mir schonmal passiert... Da hatte ich zwei verschiedene inkompatible structs.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354677</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 22 Sep 2013 15:24:16 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 15:27:57 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich erhalte beim gcc bei ints den Wert 1 als Rückgabe, bei doubles NaN.<br />
Auf einem anderen Compiler waren das aber durchaus zufällige Werte.</p>
</blockquote>
<p>Wat? Bei mir stürzten bisher alle GCCs ab. Fehlende return-Statements sollten nicht einfach in willkürlichen Rückgabewerten resultieren.</p>
<blockquote>
<p>Aber die einzige offensichtliche Erklärung wäre</p>
</blockquote>
<p>Ja, die einzig <em>offensichtliche</em> <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="🙂"
    /><br />
Obwohl du schon Recht hast, das könnte sogar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354678</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 22 Sep 2013 15:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 15:53:02 GMT]]></title><description><![CDATA[<p>Frage: Ist diese Funktion gültig?</p>
<pre><code class="language-cpp">const int&amp; f()
{
  return 0;
}
</code></pre>
<p>Antwort: Nein. Syntaktisch schon, aber sie macht null Sinn. Vernünftige Compiler geben da etwas in der Art von &quot;warning: returning reference to local temporary object&quot; aus.</p>
<p>Kontext: Deine Funktion macht etwas analoges.</p>
<p>Regel: Nie Referenzen zurückgeben, ausser es ist garantiert, dass die Referenz mindestens so lange lebt, wie das Objekt selber.</p>
<p>Ich würde schreiben</p>
<pre><code class="language-cpp">Textures::ID Aircraft::toTextureID(const Aircraft::Type&amp; type)
{
    switch(type)
    {
    case Aircraft::Type::TYPE_EAGLE:
        return Textures::ID_EAGLE;
    case Aircraft::Type::TYPE_RAPTOR:
        return Textures::ID_RAPTOR;
    default:
        assert(false);
    }
}
</code></pre>
<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<p>Aber die einzige offensichtliche Erklärung wäre</p>
</blockquote>
<p>Ja, die einzig <em>offensichtliche</em> <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>Kinder, ihr seit echt <em>unerträglich</em>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354680</guid><dc:creator><![CDATA[ongsthrtr]]></dc:creator><pubDate>Sun, 22 Sep 2013 15:53:02 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 15:57:11 GMT]]></title><description><![CDATA[<blockquote>
<p>Kontext: Deine Funktion macht etwas analoges.</p>
</blockquote>
<p>Der Enumerator ist doch nicht lokal. Moment, du hast Recht! Wie das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354682</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 22 Sep 2013 15:57:11 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 15:59:48 GMT]]></title><description><![CDATA[<p>ongsthrtr schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<p>Aber die einzige offensichtliche Erklärung wäre</p>
</blockquote>
<p>Ja, die einzig <em>offensichtliche</em> <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>Kinder, ihr seit echt <em>unerträglich</em>.</p>
</blockquote>
<p>Verdammt, das &amp; übersehen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2354683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354683</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 22 Sep 2013 15:59:48 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 15:59:38 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Moment, du hast Recht! Wie das?</p>
</blockquote>
<p>Enum-Member sind wie Literale. Die haben keine Adresse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354684</guid><dc:creator><![CDATA[ongsthrtr]]></dc:creator><pubDate>Sun, 22 Sep 2013 15:59:38 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:01:24 GMT]]></title><description><![CDATA[<p>Wahnsinn, wusste ich gar nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354685</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:01:24 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:02:12 GMT]]></title><description><![CDATA[<p>Kla gut, in dem fall wäre es egal, ob man ein enum mit oder ohne Refernz zurück gibt, aber im Falle das ich das mal mit viel Größeren Typen mache würde ich schon gerne wissen, wie ich das mit den Referenzen hinbekomme....<br />
Es sind defenitif die selben enum´s.<br />
Und ich erkenne keinen Logik Fehler, wo ein Referenz abgelaufen ist.</p>
<pre><code>enum Type
	{
		TYPE_EAGLE,
		TYPE_RAPTOR,
	};
</code></pre>
<pre><code>namespace Textures
{
	enum ID
	{
		ID_DESERT,
		ID_EAGLE,
		ID_RAPTOR,
	};
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2354686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354686</guid><dc:creator><![CDATA[DuffCola]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:02:20 GMT]]></title><description><![CDATA[<p>Aber mal ein schönes Beispiel, wie sehr man auf häufige Fehler geschult ist.<br />
Mir ist ein Fehler wegen einer Umbennung von etwas schon einmal passiert, deswegen ist mir das aufgefallen.<br />
Das mit der Referenz zu Temporary ist mir hingegen noch nie passiert (wie auch, Compilerwarnung), weswegen ich gar nicht auf so etwas geachtet habe.<br />
Faszinierend, wie unser Gehirn arbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354687</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:06:24 GMT]]></title><description><![CDATA[<p>Aber was macht man, wenn man mit Großen objekten Arbeitet?<br />
Wenn ich jetzt als ID zum Beispiel String habe, dann müsste der ja in der Funktion toTexture einen kompletten String zurückgeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354688</guid><dc:creator><![CDATA[DuffCola]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:06:24 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:09:07 GMT]]></title><description><![CDATA[<p>Das ist gar nicht das Problem. Ich dachte, Enums sind einfach Konstanten, genauso wurde das auch immer erklärt... semantisch äquivalent zu einer Deklaration von Konstanten des <code>underlying_type</code> s... dass sie prvalues sind, und nicht const lvalues, ist ja krass.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354689</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:09:07 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:07:58 GMT]]></title><description><![CDATA[<p>DuffCola schrieb:</p>
<blockquote>
<p>Aber was macht man, wenn man mit Großen objekten Arbeitet?<br />
Wenn ich jetzt als ID zum Beispiel String habe, dann müsste der ja in der Funktion toTexture einen kompletten String zurückgeben...</p>
</blockquote>
<p>Gib alles by value zurück. Der Compiler kann das optimieren. copy elision, named return value optimization, etc. Vertrau einfach darauf. Und wenn du in einem konkreten Fall nicht sicher bist, frag im Forum nach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354690</guid><dc:creator><![CDATA[ongsthrtr]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:07:58 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:08:25 GMT]]></title><description><![CDATA[<p>DuffCola schrieb:</p>
<blockquote>
<p>Aber was macht man, wenn man mit Großen objekten Arbeitet?<br />
Wenn ich jetzt als ID zum Beispiel String habe, dann müsste der ja in der Funktion toTexture einen kompletten String zurückgeben...</p>
</blockquote>
<p>Ja, dann muss die Funktion halt einen kompletten String zurückgeben.<br />
Aber der Compiler kann da schon massig optimieren, mach dir da mal keine Sorge.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354692</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:08:25 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:10:52 GMT]]></title><description><![CDATA[<p>Also ich habs gerade nochmal getestet, wenn ich eine Kopie in der to Texture Funktion zurückgebe geht alles wunderbar.<br />
Gibt es wirklich keine andere Lösung ?</p>
<p>Könnte ich vielleicht statt extra eine Funktion toTexture zu machen die Switch anweisung direkt im Konstruktor machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354693</guid><dc:creator><![CDATA[DuffCola]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:10:52 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:12:38 GMT]]></title><description><![CDATA[<p>DuffCola schrieb:</p>
<blockquote>
<p>Also ich habs gerade nochmal getestet, wenn ich eine Kopie in der to Texture Funktion zurückgebe geht alles wunderbar.<br />
Gibt es wirklich keine andere Lösung ?</p>
</blockquote>
<p>Was ist denn das Problem!?</p>
<blockquote>
<p>Könnte ich vielleicht statt extra eine Funktion toTexture zu machen die Switch anweisung direkt im Konstruktor machen?</p>
</blockquote>
<p>Du willst doch den Konstruktor von <code>mSprite</code> in der Initialisierungsliste aufrufen, nein, dann musst du das offensichtlich auslagern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354695</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:12:38 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:21:54 GMT]]></title><description><![CDATA[<blockquote>
<p>Was ist denn das Problem!?</p>
</blockquote>
<p>Dass, wenn ich ein Großen Typ als id benutze, die toTexture funktion einmal ein großes Objekt kopieren muss.<br />
Kla ist es jetzt in diesem Fall egal, trotzdem würde ich gerne ein Lösung, die ohne Kopieren funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354700</guid><dc:creator><![CDATA[DuffCola]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:21:54 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:23:42 GMT]]></title><description><![CDATA[<p>DuffCola schrieb:</p>
<blockquote>
<blockquote>
<p>Was ist denn das Problem!?</p>
</blockquote>
<p>Dass, wenn ich ein Großen Typ als id benutze, die toTexture funktion einmal ein großes Objekt kopieren muss.</p>
</blockquote>
<p>Und weiter? Wie wäre es, sich darüber Gedanken zu machen wenn es soweit ist?</p>
<blockquote>
<p>Kla ist es jetzt in diesem Fall egal, trotzdem würde ich gerne ein Lösung, die ohne Kopieren funktioniert.</p>
</blockquote>
<p>Wieso? Der Compiler kann viel optimieren. Darüber musst du dir keine Gedanken machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354701</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:23:42 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:23:58 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>DuffCola schrieb:</p>
<blockquote>
<p>Also ich habs gerade nochmal getestet, wenn ich eine Kopie in der to Texture Funktion zurückgebe geht alles wunderbar.<br />
Gibt es wirklich keine andere Lösung ?</p>
</blockquote>
<p>Was ist denn das Problem!?</p>
</blockquote>
<p>Eben.<br />
Selbst wenn der Compiler die Optimierung nicht macht, ints (nichts anders sind enums) zu kopieren, macht der Computer im Schlaf, das geht so schnell.</p>
<p>Aber beschäftige dich nicht so sehr mit Geschwindigkeit:</p>
<blockquote>
<p>Es ist viel einfacher ein korrektes Programm schnell zu machen, als ein schnelles Programm korrekt.</p>
</blockquote>
<blockquote>
<p>We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil</p>
</blockquote>
<p>Denk einfach nicht drüber nach, optimiere erst wenn du einen Grund hast und dann dort, wo es wirklich nötig ist (Profiler!)<br />
Und erst recht nicht in der Rückgabe von ints!<br />
Wenn du optimieren musst, dann ersetz deine Map in ResourceHolder durch einen Hashtable oder einen sortierten Vektor, das bringt viel mehr.</p>
<p>PS: Jetzt sag nicht, du verwendest aus diesem Grund auch keine Smart Pointer. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354703</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:23:58 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:23:58 GMT]]></title><description><![CDATA[<p>DuffCola schrieb:</p>
<blockquote>
<blockquote>
<p>Was ist denn das Problem!?</p>
</blockquote>
<p>Dass, wenn ich ein Großen Typ als id benutze, die toTexture funktion einmal ein großes Objekt kopieren muss.</p>
</blockquote>
<p>Wenn du unsere Posts gelesen hättest, wüsstest du, dass das nicht stimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354702</guid><dc:creator><![CDATA[ongsthrtr]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:23:58 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:26:52 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Aber beschäftige dich nicht so sehr mit Geschwindigkeit:</p>
</blockquote>
<p>Dieser Komentar ist völlig unangemessen. Bitte nicht die Leute zur premature pessimization ermutigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354705</guid><dc:creator><![CDATA[ongsthrtr]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:26:52 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:29:36 GMT]]></title><description><![CDATA[<p>ongsthrtr schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Aber beschäftige dich nicht so sehr mit Geschwindigkeit:</p>
</blockquote>
<p>Dieser Komentar ist völlig unangemessen. Bitte nicht die Leute zur premature pessimization ermutigen.</p>
</blockquote>
<p>preamature pessimization ist was anderes als nicht vorzeitig zu Optimieren, aber das sollte man wissen.<br />
Mein Kommentar ruft lediglich dazu auf, sich nicht bei jedem Codefetzen über Optimierungen nachzudenken.<br />
Dinge wie ++i anstatt i++ o.ä macht man ohne nachzudenken und sind deswegen ausgeschlossen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354706</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:29:36 GMT</pubDate></item><item><title><![CDATA[Reply to Referenz Wert verschwindet on Sun, 22 Sep 2013 16:34:40 GMT]]></title><description><![CDATA[<p>ongsthrtr schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Aber beschäftige dich nicht so sehr mit Geschwindigkeit:</p>
</blockquote>
<p>Dieser Komentar ist völlig unangemessen. Bitte nicht die Leute zur premature pessimization ermutigen.</p>
</blockquote>
<p>Das tut er nicht. Er sagt, der TE soll sich nicht <strong>so sehr</strong> mit Geschwindigkeit befassen - bspw. dass er sich nicht traut einen Enumerator per Kopie zurückzugeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2354707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2354707</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sun, 22 Sep 2013 16:34:40 GMT</pubDate></item></channel></rss>