<?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[Ist Object ein CModelObject oder ein CTextureObject ?]]></title><description><![CDATA[<p>Hi zusammen.<br />
Ich habe in einem Spiel folgende Klassen:</p>
<pre><code class="language-cpp">class CObject
{
    ...
};

class CModelObject: public CObject
{
    Model...
    ...
};

class CTextureObject: public CObject
{
    Texture...
    ...
};
</code></pre>
<p>Ich speichere alle Objekte als <em>CObject</em> ab. Nun will ich aber beim Kollisionstest mit einem <em>CModelObject</em> auf das Modell zugreifen. Eigentlich kein Problem, da man das Objekt ja in ein <em>CModelObject</em> umwandeln kann. Aber woher weiß ich, ob ich es mit einem <em>CModelObject</em> oder einem <em>CTextureObject</em> zu tun habe?</p>
<p>In Delphi kann man es mit dem <em>is</em>-Operator machen:</p>
<pre><code>if Object is CModelObject then
        ...
</code></pre>
<p>Vielen Dank im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159407/ist-object-ein-cmodelobject-oder-ein-ctextureobject</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 14:51:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159407.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Sep 2006 16:26:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Thu, 14 Sep 2006 16:27:22 GMT]]></title><description><![CDATA[<p>Hi zusammen.<br />
Ich habe in einem Spiel folgende Klassen:</p>
<pre><code class="language-cpp">class CObject
{
    ...
};

class CModelObject: public CObject
{
    Model...
    ...
};

class CTextureObject: public CObject
{
    Texture...
    ...
};
</code></pre>
<p>Ich speichere alle Objekte als <em>CObject</em> ab. Nun will ich aber beim Kollisionstest mit einem <em>CModelObject</em> auf das Modell zugreifen. Eigentlich kein Problem, da man das Objekt ja in ein <em>CModelObject</em> umwandeln kann. Aber woher weiß ich, ob ich es mit einem <em>CModelObject</em> oder einem <em>CTextureObject</em> zu tun habe?</p>
<p>In Delphi kann man es mit dem <em>is</em>-Operator machen:</p>
<pre><code>if Object is CModelObject then
        ...
</code></pre>
<p>Vielen Dank im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137489</guid><dc:creator><![CDATA[SomeBody]]></dc:creator><pubDate>Thu, 14 Sep 2006 16:27:22 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Thu, 14 Sep 2006 16:28:36 GMT]]></title><description><![CDATA[<p>Anstatt so rumzupfuschen solltest du einfach ein sauberes Design entwickeln..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137491</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Thu, 14 Sep 2006 16:28:36 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Thu, 14 Sep 2006 16:30:50 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>z.Bsp. mit dynamic_cast. Wenn der cast nicht erfolgreich war gibt er Null zurück.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13970">@lolz</a><br />
Da kann man manchmal nichts machen, wenn man eine Bibliothek verwendet, die so aufgebaut ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137493</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 14 Sep 2006 16:30:50 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Thu, 14 Sep 2006 16:29:29 GMT]]></title><description><![CDATA[<p>Per RTTI oder eigenem Typeinfosystem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137494</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Thu, 14 Sep 2006 16:29:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Thu, 14 Sep 2006 16:50:00 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13970">@lolz</a><br />
Da kann man manchmal nichts machen, wenn man eine Bibliothek verwendet, die so aufgebaut ist.</p>
</blockquote>
<p>SomeBody schrieb:</p>
<blockquote>
<p><strong>Ich</strong> speichere alle Objekte als CObject ab.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1137511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137511</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Thu, 14 Sep 2006 16:50:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Thu, 14 Sep 2006 16:52:50 GMT]]></title><description><![CDATA[<p>Ok,<br />
Wenn er selbst das so macht, dann ist er natürlich auch selbst schuld. Ich habe nur mal so über meine Erfahrungen mit der VCL nachgedacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137513</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 14 Sep 2006 16:52:50 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Thu, 14 Sep 2006 21:00:10 GMT]]></title><description><![CDATA[<p>Erst mal danke für die Tipps. Ich hatte leider noch keine Zeit etwas auszuprobieren, aber <em>dynamic_cast</em> sieht vielversprechend aus...<br />
Aber ich verstehe nicht, was ihr meinen Ansatz, alle Objekte in einem Array vom Typ <em>CObject</em> zu speichern, nicht so gut findet. Meint ihr, es wäre sinnvoller für alles Nachkommen von <em>CObject</em> ein Array zu erstellen, oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137653</guid><dc:creator><![CDATA[SomeBody]]></dc:creator><pubDate>Thu, 14 Sep 2006 21:00:10 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Thu, 14 Sep 2006 21:23:59 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>gegen das Array aus Basisklassen-Zeigern ist nichts einzuwenden.</p>
<p>Allerdings ist es sehr uneleganht, im späteren Verlauf wieder die genaueKlasse einer solchen Instanz expliziet erhausfinden zu müssen. Sondern das sollte durch den gezielten Einsatz der Polymorphie nicht nötig sein.<br />
Natülich ist CObjekt eine viel zu allgemeine Klasse, um effektive Basisklasse zu sein. Dein Array sollte schon einen genau bestimmten Zweck haben, dem alle Elemente entsprechen müßen. Und ob da Texturen und 3D-Models in einen Container gehören, ist sehr fraglich.<br />
Sinnvoller wäre ein Array für Texturen, basierend auf einer Basisklasse CBaseTexture (meinetwegen diese noch von CObject abgeleitet). Und ein Array von CBaseModel.</p>
<p>Der Vorteil ist nun, das du über das Model-Array itereiren kannst, sicher sein kannst das nur &quot;kollisionswürdige&quot; Objekte dort vorhanden sind und du auch gleich die richtigen Methoden zur Behandlung anwenden kannst.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137666</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 14 Sep 2006 21:23:59 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Thu, 14 Sep 2006 21:42:33 GMT]]></title><description><![CDATA[<p>Hmm, ich glaube, da habt ihr mich teilweise falsch verstanden. <em>CObject</em> ist die Basisklasse für ein Objekt (Gegenstand), das irgendwo in der Spielwelt steht. <em>CModelObject</em> ist einfach ein Objekt, das durch ein 3D-Modell dargestellt wird, und <em>CTextureObject</em> ist ein Objekt, das nur durch eine Textur dargestellt wird. Das hat den Hintergrund, das ich simple Objekte nicht als 3D-Modell darstellen will, sondern nur durch die Textur: Das könnte z.B. ein Bild an der Wand sein oder ein Teppich. Diese simplen Objekte sollen dann aber auch kollisionswürdig sein, damit z.B. eine bestimmte Aktion ausgelöst werden kann, wenn der Spieler auf dem Teppich steht.<br />
Die Unterscheidung brauche ich nur, damit ich bei <em>CModelObject</em> auf eine Kollision mit einem Modell und bei <em>CTextureObject</em> auf eine Kollision mit einem Rechteck (bzw. Quader mit geringer Dicke) testen kann..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137669</guid><dc:creator><![CDATA[SomeBody]]></dc:creator><pubDate>Thu, 14 Sep 2006 21:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Thu, 14 Sep 2006 21:58:22 GMT]]></title><description><![CDATA[<p>Ach so. Dazu gibt's sogar praktischerweise einen Artikel hier im &quot;Magazin&quot;: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-159235.html" rel="nofollow">www.c-plusplus.net/forum/viewtopic-var-t-is-159235.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1137674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1137674</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Thu, 14 Sep 2006 21:58:22 GMT</pubDate></item><item><title><![CDATA[Reply to Ist Object ein CModelObject oder ein CTextureObject ? on Fri, 15 Sep 2006 15:20:36 GMT]]></title><description><![CDATA[<p>Also eigentlich ist doch CTextureObject und CModelObject eh das selbe. Beides hat mindestens 3 Punkte, mämlich das allseits bekannte Dreieck.<br />
Ich würde in dein Array CObjects aufnehmen und CObject eine Methode zur Kollisionserkennung geben, die dann in TextureObject und ModelObject unterschiedlich implementiert sind.<br />
Somit brauchst du nicht mehr zu unterscheiden ob es ein Texture oder ein ModelObject ist.</p>
<p>Überhaupt deutet das auf ein sehr schlechtes Design, wenn man zur Laufzeit überprüfen muss welche Klasse ein Objekt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138047</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Fri, 15 Sep 2006 15:20:36 GMT</pubDate></item></channel></rss>