<?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[Casten und Attribute nicht &amp;quot;verlieren&amp;quot;]]></title><description><![CDATA[<p>Hallo,<br />
ich wollte mich mal nach Lösungsmöglichkeiten für folgendes Problem erkundigen, vermutlich haben viele von euch schon mal ein derartiges Problem gehabt:</p>
<p>Ich habe zwei Klassen, sagen wir Obst und Apfel. Apfel erbt von Obst.</p>
<p>Nun habe ich eine Methode, die ein Obst als Parameter erwartet. Hier übergebe ich nun einen Apfel, den ich vorher in ein Obst caste.<br />
Nun habe ich natürlich dass Problem, dass ich nicht mehr auf die Apfel-Eigenschaften zugreifen kann, was ich aber möchte <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>
<p>gibts da ne lösung für? vorschläge? eventuell ein pattern oder dergleichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174590/casten-und-attribute-nicht-quot-verlieren-quot</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 20:17:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174590.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Feb 2007 20:36:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Casten und Attribute nicht &amp;quot;verlieren&amp;quot; on Wed, 28 Feb 2007 20:36:10 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich wollte mich mal nach Lösungsmöglichkeiten für folgendes Problem erkundigen, vermutlich haben viele von euch schon mal ein derartiges Problem gehabt:</p>
<p>Ich habe zwei Klassen, sagen wir Obst und Apfel. Apfel erbt von Obst.</p>
<p>Nun habe ich eine Methode, die ein Obst als Parameter erwartet. Hier übergebe ich nun einen Apfel, den ich vorher in ein Obst caste.<br />
Nun habe ich natürlich dass Problem, dass ich nicht mehr auf die Apfel-Eigenschaften zugreifen kann, was ich aber möchte <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>
<p>gibts da ne lösung für? vorschläge? eventuell ein pattern oder dergleichen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237070</guid><dc:creator><![CDATA[gaylord]]></dc:creator><pubDate>Wed, 28 Feb 2007 20:36:10 GMT</pubDate></item><item><title><![CDATA[Reply to Casten und Attribute nicht &amp;quot;verlieren&amp;quot; on Wed, 28 Feb 2007 20:48:34 GMT]]></title><description><![CDATA[<p>visitor patter, double dispatching oder ganz brutal schauen ob dynamic_cast geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237077</guid><dc:creator><![CDATA[richtentext:]]></dc:creator><pubDate>Wed, 28 Feb 2007 20:48:34 GMT</pubDate></item><item><title><![CDATA[Reply to Casten und Attribute nicht &amp;quot;verlieren&amp;quot; on Wed, 28 Feb 2007 23:07:46 GMT]]></title><description><![CDATA[<p>geilo genau das richtige danke <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/1237155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237155</guid><dc:creator><![CDATA[gaylord]]></dc:creator><pubDate>Wed, 28 Feb 2007 23:07:46 GMT</pubDate></item><item><title><![CDATA[Reply to Casten und Attribute nicht &amp;quot;verlieren&amp;quot; on Thu, 01 Mar 2007 07:42:51 GMT]]></title><description><![CDATA[<p>Wenn du das Obst per Kopie übergibst ( <code>void func(Obst param);</code> ), sind die Apfel-Eigenschaften unwiderbringlich verloren. Deshalb übergibt man polymorphe Objekte üblicherweise per Referenz/Zeiger - und dann deutet es normalerweise auf schlechtes Design, wenn du direkt auf Eigenschaften einer spezifischen Klasse zugreifen MUSST (wenn die Funktion davon ausgeht, einen Apfel zu bekommen, solltest du das auch in der Parameterliste klarstellen, wenn sie ein Obst erwartet, sollte sie sich nur auf dessen Interface beschränken (wobei die Klasse 'Apfel' natürlich berechtigt ist, die virtuellen Methoden zu überschreiben)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237213</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 01 Mar 2007 07:42:51 GMT</pubDate></item><item><title><![CDATA[Reply to Casten und Attribute nicht &amp;quot;verlieren&amp;quot; on Thu, 01 Mar 2007 09:44:42 GMT]]></title><description><![CDATA[<p>gaylord schrieb:</p>
<blockquote>
<p>...<br />
gibts da ne lösung für? vorschläge? eventuell ein pattern oder dergleichen?</p>
</blockquote>
<p>Naja, eigentlich ist das das ganz normale Polymorphie ... die man in C++ üblicherweise über Zeiger/Referenzen löst:</p>
<pre><code class="language-cpp">struct Obst {
    int obstAttr;
    virtual int&amp; attr() { return obstAttr; }
};

struct Apfel : Obst {
    int apfelAttr;
    virtual int&amp; attr() { return apfelAttr; }
};

void f(Obst&amp; o) {
    ++o.attr();
}

int main(void) {
    Apfel a;
    a.apfelAttr = 1;
    f(a);
    return 0;
}
</code></pre>
<p>Das bedeutet natürlich, dass die Obst-Schnittstelle das entsprechend bedienen muß... (andernfalls: s. CStoll).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1237267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1237267</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 01 Mar 2007 09:44:42 GMT</pubDate></item></channel></rss>