<?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[reinterpret_cast]]></title><description><![CDATA[<p>Hallo,</p>
<p>Das ist das erste Mal, dass ich reinterpret_cast verwende, ich bin mir nichtmal sicher, ob das in meinem Fall angebracht ist, vielleicht würden virtuelle Funktionen mehr bringen.</p>
<p>Nunja, zu meinem Problem:</p>
<p>Ich habe einen Container mit all meinen Objekten <em>allObjects</em>. Dieser Container ist vom Typ <em>vector&lt;Object</em>&gt;*. Da drinnen speichere ich aber auch <em>MovingObject</em>*, die von Object erben.</p>
<p>Wenn ich nun versuche ein Attribut von <em>MovingObject</em> zu editieren, sagt mir mein Compiler, dass <em>Object</em> kein solchen Typ kennt, darum habe ich mir gedacht ich verwende <em>reinterpret_cast</em>:</p>
<pre><code class="language-cpp">for (unsigned int i = 0; i &lt; 2; i++)
            (reinterpret_cast&lt;rO::MovingObject*&gt; (allObjects[i]))-&gt;Speed = 5;
            (reinterpret_cast&lt;rO::MovingObject*&gt; (allObjects[i]))-&gt;SetMoveMode(D_UPDOWN); // Zeile 32
            (reinterpret_cast&lt;rO::MovingObject*&gt; (allObjects[i]))-&gt;SetChangeSideOnWindowLeave(true);
        }
</code></pre>
<p>Leider spuckt mein Compiler mir tonnenweise Errors aus.<br />
Könntet Ihr mir vielleicht helfen? Ist es überhaupt klug hier reinterpret_cast zu verwenden?</p>
<p>Errors:</p>
<p>(32) : error C2065: 'i': nichtdeklarierter Bezeichner<br />
error C2227: Links von &quot;-&gt;SetMoveMode&quot; muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261437/reinterpret_cast</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 05:04:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261437.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Feb 2010 14:20:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to reinterpret_cast on Thu, 18 Feb 2010 14:20:38 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Das ist das erste Mal, dass ich reinterpret_cast verwende, ich bin mir nichtmal sicher, ob das in meinem Fall angebracht ist, vielleicht würden virtuelle Funktionen mehr bringen.</p>
<p>Nunja, zu meinem Problem:</p>
<p>Ich habe einen Container mit all meinen Objekten <em>allObjects</em>. Dieser Container ist vom Typ <em>vector&lt;Object</em>&gt;*. Da drinnen speichere ich aber auch <em>MovingObject</em>*, die von Object erben.</p>
<p>Wenn ich nun versuche ein Attribut von <em>MovingObject</em> zu editieren, sagt mir mein Compiler, dass <em>Object</em> kein solchen Typ kennt, darum habe ich mir gedacht ich verwende <em>reinterpret_cast</em>:</p>
<pre><code class="language-cpp">for (unsigned int i = 0; i &lt; 2; i++)
            (reinterpret_cast&lt;rO::MovingObject*&gt; (allObjects[i]))-&gt;Speed = 5;
            (reinterpret_cast&lt;rO::MovingObject*&gt; (allObjects[i]))-&gt;SetMoveMode(D_UPDOWN); // Zeile 32
            (reinterpret_cast&lt;rO::MovingObject*&gt; (allObjects[i]))-&gt;SetChangeSideOnWindowLeave(true);
        }
</code></pre>
<p>Leider spuckt mein Compiler mir tonnenweise Errors aus.<br />
Könntet Ihr mir vielleicht helfen? Ist es überhaupt klug hier reinterpret_cast zu verwenden?</p>
<p>Errors:</p>
<p>(32) : error C2065: 'i': nichtdeklarierter Bezeichner<br />
error C2227: Links von &quot;-&gt;SetMoveMode&quot; muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857592</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Thu, 18 Feb 2010 14:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to reinterpret_cast on Thu, 18 Feb 2010 14:23:56 GMT]]></title><description><![CDATA[<p>Dein Problem: Die öffnende Klammer der Schleife fehlt.</p>
<p>Desweiteren:<br />
1. dyn-Casten<br />
2. auf 0 prüfen (Cast erfolgreich oder nicht (0)?)<br />
3. nicht 0? dann verwenden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857593</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 18 Feb 2010 14:23:56 GMT</pubDate></item><item><title><![CDATA[Reply to reinterpret_cast on Thu, 18 Feb 2010 14:25:06 GMT]]></title><description><![CDATA[<p>Wie schon erwähnt, suchst du den dynamic_cast. Aber an deiner Stelle würde ich den nicht benutzen. Es gibt viel schönere Lösungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857595</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Thu, 18 Feb 2010 14:25:06 GMT</pubDate></item><item><title><![CDATA[Reply to reinterpret_cast on Thu, 18 Feb 2010 14:25:19 GMT]]></title><description><![CDATA[<p>Der zweite Fehler tritt IMMER auf, wenn er in der Zeile i nicht erkennt. So kann er das Array nicht auflösen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857596</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Thu, 18 Feb 2010 14:25:19 GMT</pubDate></item><item><title><![CDATA[Reply to reinterpret_cast on Thu, 18 Feb 2010 14:25:30 GMT]]></title><description><![CDATA[<p>Oh mein Gott!</p>
<p>Verdammt. Danke für die Tipps! <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/1857597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857597</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Thu, 18 Feb 2010 14:25:30 GMT</pubDate></item><item><title><![CDATA[Reply to reinterpret_cast on Thu, 18 Feb 2010 20:27:35 GMT]]></title><description><![CDATA[<p>Michael E. schrieb:</p>
<blockquote>
<p>... dynamic_cast. Aber an deiner Stelle würde ich den nicht benutzen. Es gibt viel schönere Lösungen.</p>
</blockquote>
<p>Ja, z.B. static_cast <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/1857871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857871</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 18 Feb 2010 20:27:35 GMT</pubDate></item><item><title><![CDATA[Reply to reinterpret_cast on Thu, 18 Feb 2010 20:40:24 GMT]]></title><description><![CDATA[<p>Oder aber gar kein Cast <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> (so wars gemeint).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857880</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857880</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Thu, 18 Feb 2010 20:40:24 GMT</pubDate></item><item><title><![CDATA[Reply to reinterpret_cast on Thu, 18 Feb 2010 21:21:10 GMT]]></title><description><![CDATA[<p>Samyboy schrieb:</p>
<blockquote>
<p>[...] darum habe ich mir gedacht ich verwende <em>reinterpret_cast</em>:<br />
[...] Ist es überhaupt klug hier reinterpret_cast zu verwenden?</p>
</blockquote>
<p>Nein. Bei <code>reinterpret_cast</code> musst du ganz genau wissen, was du tust. Du hebelst nämlich das gesamte Typsystem aus, was sehr schnell mühsame Fehler erzeugen kann. Du brauchst diesen Cast wirklich nur auf Low-Level-Ebene, also im Allgemeinen sehr selten. Der C- und Funktionsstyle-Cast können übrigens auch Speicher reinterpretieren, nur ist das bei ihnen sehr unscheinbar (und daher auch eine gar nicht so offensichtliche Gefahrenquelle).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857903</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 18 Feb 2010 21:21:10 GMT</pubDate></item><item><title><![CDATA[Reply to reinterpret_cast on Thu, 18 Feb 2010 23:53:47 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Der C- und Funktionsstyle-Cast können übrigens auch Speicher reinterpretieren (...)</p>
</blockquote>
<p>Japp.<br />
Ganz besonders schlimm finde ich den Function Style Cast, da er wie ein Konstruktor aussieht.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">class Distance
{
public: 
    explicit Distance(char const* textualRepresentation);
    // ...
};

void foo(Distance d);

void bar()
{
    foo(Distance(&quot;one meter&quot;)); // OK, so lange Distance::Distance(char const*) das &quot;one meter&quot; verstehen kann
}
</code></pre>
<p>vs.</p>
<pre><code class="language-cpp">typedef int Distance;

void foo(Distance d);

void bar()
{
    foo(Distance(&quot;one meter&quot;)); // effektiv ein reinterpret_cast&lt;int&gt;() -&gt; BUMM
}
</code></pre>
<p>Das Beispiel ist zugegebenermassen an den Haaren herbeigezogen. Allerdings hab' ich schon öfters Code gesehen, wo ein Function Style Cast &quot;T(x)&quot; verwendet wurde, wo nicht auf den ersten Blick klar war, ob T nun ein Class-Type ist oder nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1857972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1857972</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 18 Feb 2010 23:53:47 GMT</pubDate></item></channel></rss>