<?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[Zeigervergleich mit unvollständigen Informationen bei Vererbung]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Klasse A, wovon Klassen B und C erben.</p>
<p>In irgendeiner anderen Klasse D werden jetzt nur Zeiger verwaltet, Implementierungsdetails von A, B, C sind hier nicht notwendig, weswegen ich dort natürlich nur forward declarations verwende.</p>
<p>Ich habe dort zwei Zeiger:</p>
<pre><code class="language-cpp">B* b;
C* c;
</code></pre>
<p>und eine Funktion:</p>
<pre><code class="language-cpp">A* getCurrentA();
</code></pre>
<p>Ich möchte nun getCurrentA() mit b oder c vergleichen, habe aber natürlich mit forward declarations nicht die Infos, dass B von A oder C von A erbt. Ich kann also keinen Zeigervergleich ohne casts machen.</p>
<p><strong>Findet ihr es legitim hier die Typsicherheit zu umgehen, indem ich reinterpret-caste?</strong></p>
<p>Die Alternative wäre die Header von (A,) B und C zu inkludieren. D benötigt diese Informationen jedoch sonst an keiner Stelle, ich würde also unnötige (bis auf eben diesen Zeigervergleich) physische Abhängigkeiten schaffen.</p>
<p>Viele Grüße<br />
Eisflamme</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/335410/zeigervergleich-mit-unvollständigen-informationen-bei-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 15:39:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/335410.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Nov 2015 10:26:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeigervergleich mit unvollständigen Informationen bei Vererbung on Thu, 19 Nov 2015 10:26:52 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine Klasse A, wovon Klassen B und C erben.</p>
<p>In irgendeiner anderen Klasse D werden jetzt nur Zeiger verwaltet, Implementierungsdetails von A, B, C sind hier nicht notwendig, weswegen ich dort natürlich nur forward declarations verwende.</p>
<p>Ich habe dort zwei Zeiger:</p>
<pre><code class="language-cpp">B* b;
C* c;
</code></pre>
<p>und eine Funktion:</p>
<pre><code class="language-cpp">A* getCurrentA();
</code></pre>
<p>Ich möchte nun getCurrentA() mit b oder c vergleichen, habe aber natürlich mit forward declarations nicht die Infos, dass B von A oder C von A erbt. Ich kann also keinen Zeigervergleich ohne casts machen.</p>
<p><strong>Findet ihr es legitim hier die Typsicherheit zu umgehen, indem ich reinterpret-caste?</strong></p>
<p>Die Alternative wäre die Header von (A,) B und C zu inkludieren. D benötigt diese Informationen jedoch sonst an keiner Stelle, ich würde also unnötige (bis auf eben diesen Zeigervergleich) physische Abhängigkeiten schaffen.</p>
<p>Viele Grüße<br />
Eisflamme</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2476049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2476049</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Thu, 19 Nov 2015 10:26:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigervergleich mit unvollständigen Informationen bei Vererbung on Thu, 19 Nov 2015 10:48:51 GMT]]></title><description><![CDATA[<p>Der Cast ist eine schlechte Idee, da die Adressen nicht zwingend die gleichen sein müssen. Ein Beispiel wäre bei Mehrfachvererbung oder ein hier eventuell passenderes Polymorphie:</p>
<pre><code>class A
{
public:
  int x;
};

class B : public A
{
public:
  virtual ~B() = default;
  int y;
};

int main()
{
  B b;
  B* p1 = &amp;b;
  A* p2 = &amp;b;

  cout &lt;&lt; p1 &lt;&lt; endl;
  cout &lt;&lt; p2 &lt;&lt; endl;
}
</code></pre>
<p>Mögliche Ausgabe unter Windows:</p>
<pre><code>003AFE98
003AFE9C
</code></pre>
<p>Wenn du also deinen <code>reinterpret_cast</code> machst kriegst du vermutlich raus das die Objekte unterschiedlich sind, auch wenn es eigentlich die gleichen wären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2476052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2476052</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Thu, 19 Nov 2015 10:48:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigervergleich mit unvollständigen Informationen bei Vererbung on Thu, 19 Nov 2015 10:54:27 GMT]]></title><description><![CDATA[<blockquote>
<p>Findet ihr es legitim hier die Typsicherheit zu umgehen, indem ich reinterpret-caste?</p>
</blockquote>
<p>Kommt auf die Art der Klassen an. Haben sie Standardlayout? Ansonsten ist der Vergleich nicht sinnvoll, da er false negatives liefern könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2476054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2476054</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 19 Nov 2015 10:54:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zeigervergleich mit unvollständigen Informationen bei Vererbung on Thu, 19 Nov 2015 11:11:39 GMT]]></title><description><![CDATA[<p>Oh, da muss ich natürlich tatsächlich aufpassen, gut dass ich gefragt hab. Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2476057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2476057</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Thu, 19 Nov 2015 11:11:39 GMT</pubDate></item></channel></rss>