<?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[Strukturen virtuell ableiten?]]></title><description><![CDATA[<p>Hallo,<br />
ich weiß nciht ob es für mein Problem eine Lösung gibt. Ich habe eine Klasse, in der ist eine Struktur definiert. Und die Klasse bearbeitet diese Struktur (z.B. sortieren der Inhalte). Jetzt leite ich die Klasseab um die FUnktionalität zu erweitern, aber auch meine Struktur soll mehr Inhalt bekommen. Jetzt soll aber die Basisklasse die Struktur weiterhin sortieren, jedoch zus. mit den neuen elementen. Also dachte ich ir. Machste die Struktur virtuell und leitest sie in der abgeleiteten Klasse ab., Geht aber nicht. STrukturen dürfen wohl nciht virtuell sein sagt der COmpiler. Gibt es eine Möglichkeit sowas zu machen?</p>
<pre><code class="language-cpp">Header Basisklasse

public:
   struct Test{
      int a;
   } MyTest[10];
</code></pre>
<pre><code class="language-cpp">Header abgeleitete Klasse

public:
   struct Test2:Test{
      int b;
   } MyTest[10];
</code></pre>
<p>-&gt; Struktur in abgeleiteter Klasse enthält jetzt a und b !</p>
<pre><code class="language-cpp">Ausgabe in Basisklasse

Caption = MyTest[0].a;
</code></pre>
<p>Die Basisklasse liefert aber immer nur den Inhalt der eigenen Struktur. Wenn ich MyTest jetzt in der Ableitung fülle ( a und b ) wird es von der Basisklasse nicht genommen. Jetzt wollte ich die struct virtual machen (wie bei FUnktionen die überschrieben werden und die Basisklasse auf die Funktionen der Ableitung zugreift), aber der Compiler meldet, das die STruktur nicht virtual sein kann. Und nun ????</p>
<p>Hoffe ich habe mich einigermassen verständlich ausgedrückt:-)</p>
<p>Jörn</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155327/strukturen-virtuell-ableiten</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 11:13:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155327.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Aug 2006 20:19:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Strukturen virtuell ableiten? on Fri, 04 Aug 2006 20:19:08 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich weiß nciht ob es für mein Problem eine Lösung gibt. Ich habe eine Klasse, in der ist eine Struktur definiert. Und die Klasse bearbeitet diese Struktur (z.B. sortieren der Inhalte). Jetzt leite ich die Klasseab um die FUnktionalität zu erweitern, aber auch meine Struktur soll mehr Inhalt bekommen. Jetzt soll aber die Basisklasse die Struktur weiterhin sortieren, jedoch zus. mit den neuen elementen. Also dachte ich ir. Machste die Struktur virtuell und leitest sie in der abgeleiteten Klasse ab., Geht aber nicht. STrukturen dürfen wohl nciht virtuell sein sagt der COmpiler. Gibt es eine Möglichkeit sowas zu machen?</p>
<pre><code class="language-cpp">Header Basisklasse

public:
   struct Test{
      int a;
   } MyTest[10];
</code></pre>
<pre><code class="language-cpp">Header abgeleitete Klasse

public:
   struct Test2:Test{
      int b;
   } MyTest[10];
</code></pre>
<p>-&gt; Struktur in abgeleiteter Klasse enthält jetzt a und b !</p>
<pre><code class="language-cpp">Ausgabe in Basisklasse

Caption = MyTest[0].a;
</code></pre>
<p>Die Basisklasse liefert aber immer nur den Inhalt der eigenen Struktur. Wenn ich MyTest jetzt in der Ableitung fülle ( a und b ) wird es von der Basisklasse nicht genommen. Jetzt wollte ich die struct virtual machen (wie bei FUnktionen die überschrieben werden und die Basisklasse auf die Funktionen der Ableitung zugreift), aber der Compiler meldet, das die STruktur nicht virtual sein kann. Und nun ????</p>
<p>Hoffe ich habe mich einigermassen verständlich ausgedrückt:-)</p>
<p>Jörn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110809</guid><dc:creator><![CDATA[California]]></dc:creator><pubDate>Fri, 04 Aug 2006 20:19:08 GMT</pubDate></item><item><title><![CDATA[Reply to Strukturen virtuell ableiten? on Fri, 04 Aug 2006 20:37:31 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>natürlich dürfen auh structs virtuel sein, schließlich gibt es kaum einen unterschied zwischen struct und class.<br />
Allerdings hast du mit dem einfachen Array das Problem das du nicht wirklich abgeleitete Instanzen darin speichern kannst. Sondern du mist mit Pointern arbeiten</p>
<pre><code class="language-cpp">// Header Basisklasse
public:
   struct Test{
      int a;
   };
Test* MyTest[10];
</code></pre>
<pre><code class="language-cpp">// Header abgeleitete Klasse
public:
   struct Test2: public Test{
      int b;
   } 
// hier das Array MyTest mit Instanzen on Test2 füllen, kann aber auch in der Implementation der Basisklasse wieder gelöscht werden.
</code></pre>
<p>/Edit : Noch mal genauer der Grund warum dein Code nicht läuft :<br />
bei deinem Array Test MyTest[10] wird Speicherplatz für 10 Instanzen von Test reserviert. Das heißt 10x4Byte, weil Test ja eine int-Member hat.<br />
Aber Test2 hat 8 Byte. Und deshalb kann unmöglich eine Instanz von Test2 in das Array MyTest. Und Membervariablen sind nicht wie Methoden Polymorph.<br />
Mit Pointern hingegen wird für jedes Element hingegen nur 4 byte reserviert, egal wie groß die eigentliche Instanz wirklich ist.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110814</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 04 Aug 2006 20:37:31 GMT</pubDate></item></channel></rss>