<?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[C++ Problem (Vererbung und andere schöne sachen :-D)]]></title><description><![CDATA[<p>Hallo Leude ;-),</p>
<p>also es kann sein das ich ganz schön auf dem schlauch stehe, aber ich fang einfach mal an mein Problem zu beschreiben <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>
<p>nun angenommen wir haben eine Klasse A und eine Klasse B die wie folgt definiert sind :</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class A
{
    public:
        void fkt1(){cout &lt;&lt; &quot;fkt1&quot; &lt;&lt; endl;}
}

template&lt;class T&gt;
class B : public A
{
    public:
        void fkt2(){cout &lt;&lt; &quot;fkt2&quot; &lt;&lt; endl;}
}
</code></pre>
<p>nun möchte aus einem bestehendem Objekt A ein Objekt B machen.<br />
also im Prinzip Objekt A ersetzen durch Objekt B.</p>
<p>folgendes soll also funktionieren(es funktioniert nicht deswegen schreib ich hier, es geht um die funktionsweisse die ich haben will ;-))</p>
<pre><code class="language-cpp">A&lt;Klasse&gt; a;
B&lt;Klasse&gt; *b;

b = &amp;a;
b-&gt;fkt2();
</code></pre>
<p>Ich hab schon alle möglichen cast's probiert, ohne erfolg. Ist ja auch klar a ist ebend kein B, demnach existiert fkt2() nicht in a.</p>
<p>wie gesagt ich will das b, a repräsentiert. und wenn an a änderungen vorgenommen werden diese bei b bemerkbar sind / auch gemacht wreden.</p>
<p>ach ja zusätzliches problem ist das ich die quellen von A nicht gegeben habe, sie also nicht verändern darf.</p>
<p>Das anliegen dahinter ist ein GUI frontend für ein simulationsframework.</p>
<p>Auch wenn meine beschreibungen hier bisschen wage sind, hoffe ich das ich hier hilfe kriege. Wenn ihr mehr infos braucht einfach frage ;-).</p>
<p>gruß c0d3x</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295388/c-problem-vererbung-und-andere-schöne-sachen-d</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 11:19:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295388.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Nov 2011 12:32:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Problem (Vererbung und andere schöne sachen :-D) on Sun, 13 Nov 2011 12:32:11 GMT]]></title><description><![CDATA[<p>Hallo Leude ;-),</p>
<p>also es kann sein das ich ganz schön auf dem schlauch stehe, aber ich fang einfach mal an mein Problem zu beschreiben <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>
<p>nun angenommen wir haben eine Klasse A und eine Klasse B die wie folgt definiert sind :</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class A
{
    public:
        void fkt1(){cout &lt;&lt; &quot;fkt1&quot; &lt;&lt; endl;}
}

template&lt;class T&gt;
class B : public A
{
    public:
        void fkt2(){cout &lt;&lt; &quot;fkt2&quot; &lt;&lt; endl;}
}
</code></pre>
<p>nun möchte aus einem bestehendem Objekt A ein Objekt B machen.<br />
also im Prinzip Objekt A ersetzen durch Objekt B.</p>
<p>folgendes soll also funktionieren(es funktioniert nicht deswegen schreib ich hier, es geht um die funktionsweisse die ich haben will ;-))</p>
<pre><code class="language-cpp">A&lt;Klasse&gt; a;
B&lt;Klasse&gt; *b;

b = &amp;a;
b-&gt;fkt2();
</code></pre>
<p>Ich hab schon alle möglichen cast's probiert, ohne erfolg. Ist ja auch klar a ist ebend kein B, demnach existiert fkt2() nicht in a.</p>
<p>wie gesagt ich will das b, a repräsentiert. und wenn an a änderungen vorgenommen werden diese bei b bemerkbar sind / auch gemacht wreden.</p>
<p>ach ja zusätzliches problem ist das ich die quellen von A nicht gegeben habe, sie also nicht verändern darf.</p>
<p>Das anliegen dahinter ist ein GUI frontend für ein simulationsframework.</p>
<p>Auch wenn meine beschreibungen hier bisschen wage sind, hoffe ich das ich hier hilfe kriege. Wenn ihr mehr infos braucht einfach frage ;-).</p>
<p>gruß c0d3x</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2143919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2143919</guid><dc:creator><![CDATA[c0d3x]]></dc:creator><pubDate>Sun, 13 Nov 2011 12:32:11 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Problem (Vererbung und andere schöne sachen :-D) on Sun, 13 Nov 2011 12:40:15 GMT]]></title><description><![CDATA[<p>du brauchst einen upcast...</p>
<p>ist kein schönes design sondern eher dreckig und langsam:</p>
<pre><code class="language-cpp">A&lt;Klasse&gt; a;
B&lt;Klasse&gt; *b;

b = dynamic_cast&lt;B*&gt;(&amp;a);
if ( b != nullptr )
    b-&gt;fkt2();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2143923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2143923</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 13 Nov 2011 12:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Problem (Vererbung und andere schöne sachen :-D) on Sun, 13 Nov 2011 12:58:18 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>du brauchst einen upcast...</p>
<p>ist kein schönes design sondern eher dreckig und langsam:</p>
<pre><code class="language-cpp">A&lt;Klasse&gt; a;
B&lt;Klasse&gt; *b;

b = dynamic_cast&lt;B*&gt;(&amp;a);
if ( b != nullptr )
    b-&gt;fkt2();
</code></pre>
</blockquote>
<p>Das ist doch blödsinn. b wird immer == nullptr sein, weil wie der TE schon richtig erkannt hat, a kein B ist.<br />
Ich vermute mal, dass Vererbung hier einfach nicht das richtige Mittel ist! Versuch es doch mal mit Komposition</p>
<pre><code class="language-cpp">class B
{
  void f1() { a.f1(); }
  A a;
};
</code></pre>
<p>oder Aggregation</p>
<pre><code class="language-cpp">class B
{
  void f1() { a-&gt;f1(); }
  A* a;
};
</code></pre>
<p>Oder am besten erklärst du uns mal das Problem genauer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2143930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2143930</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 13 Nov 2011 12:58:18 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Problem (Vererbung und andere schöne sachen :-D) on Sun, 13 Nov 2011 13:18:07 GMT]]></title><description><![CDATA[<p>hm ... ok .. danke ich muss da wohl nochmal brühten ^^ ...</p>
<p>naja der knackpunkt ist das A ein signal darstellt mit dem zwischen anderen klassen komuniziert wird. Dieses Signal will ich abfangen und dann mittels B an die GUI senden.</p>
<p>ich werd nochmal ne genauere beschreibung verfassen ... aber ich fahr gleich zug ... ^^ ... da hab ich dann nochmal zeit drüber nachzudenken ... mal sehen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2143935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2143935</guid><dc:creator><![CDATA[c0d3x]]></dc:creator><pubDate>Sun, 13 Nov 2011 13:18:07 GMT</pubDate></item></channel></rss>