<?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[Vorwärtsdeklaration mit Vererbungsangabe]]></title><description><![CDATA[<p>Hallo @all,</p>
<p>ich habe folgendes Beispiel und würde gerne wissen, ob ich das durch<br />
Vorwärtsdeklaration lösen kann. Mir ist klar, dass ich den entsprechenden<br />
Header einfach inkludieren kann, aber Vorwärtsdeklaration rulez <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>icrate.h:</p>
<pre><code class="language-cpp">class Bottle;

class ICrate {

public:
    virtual Bottle&amp; operator[](unsigned int i) = 0; 

}
</code></pre>
<p>crate.h</p>
<pre><code class="language-cpp">#include &quot;icrate.h&quot;

template &lt;class BottleType&gt;
class Crate : public ICrate {

public:
    virtual Bottle&amp; operator[](unsigned int i){return *bottles[i]}; 
    BottleType&amp; getBottle(unsigned int i){return *bottles[i]};

private:
    std::vector&lt;BottleType*&gt; bottles;

}

#include &quot;bottle.h&quot; // hier muss ja includiert werden, da Bottle eine Basisklasse ist
class BeerBottle : public Bottle; // muss ich hier auch inkludieren? So klappt es jedenfalls nicht :(

typedef Crate&lt;BeerBottle&gt; BeerCrate;
</code></pre>
<p>Ich hoffe es ist klar geworden, was ich meine. Es geht halt um die Vorwärts-<br />
deklaration von BeerBottle.</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217353/vorwärtsdeklaration-mit-vererbungsangabe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 19:55:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217353.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Jul 2008 21:07:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vorwärtsdeklaration mit Vererbungsangabe on Sun, 06 Jul 2008 21:11:17 GMT]]></title><description><![CDATA[<p>Hallo @all,</p>
<p>ich habe folgendes Beispiel und würde gerne wissen, ob ich das durch<br />
Vorwärtsdeklaration lösen kann. Mir ist klar, dass ich den entsprechenden<br />
Header einfach inkludieren kann, aber Vorwärtsdeklaration rulez <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>icrate.h:</p>
<pre><code class="language-cpp">class Bottle;

class ICrate {

public:
    virtual Bottle&amp; operator[](unsigned int i) = 0; 

}
</code></pre>
<p>crate.h</p>
<pre><code class="language-cpp">#include &quot;icrate.h&quot;

template &lt;class BottleType&gt;
class Crate : public ICrate {

public:
    virtual Bottle&amp; operator[](unsigned int i){return *bottles[i]}; 
    BottleType&amp; getBottle(unsigned int i){return *bottles[i]};

private:
    std::vector&lt;BottleType*&gt; bottles;

}

#include &quot;bottle.h&quot; // hier muss ja includiert werden, da Bottle eine Basisklasse ist
class BeerBottle : public Bottle; // muss ich hier auch inkludieren? So klappt es jedenfalls nicht :(

typedef Crate&lt;BeerBottle&gt; BeerCrate;
</code></pre>
<p>Ich hoffe es ist klar geworden, was ich meine. Es geht halt um die Vorwärts-<br />
deklaration von BeerBottle.</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542173</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 06 Jul 2008 21:11:17 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration mit Vererbungsangabe on Sun, 06 Jul 2008 21:10:25 GMT]]></title><description><![CDATA[<p>Also ich <strong>glaube</strong> dass BeerBottle ein unvollständiger Typ ist wenn Bottle nicht vollständig definiert ist, da es ja die Basis ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542175</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Sun, 06 Jul 2008 21:10:25 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration mit Vererbungsangabe on Sun, 06 Jul 2008 21:14:39 GMT]]></title><description><![CDATA[<p>Hallo Pigeon,</p>
<p>ich habe die Klasse Bottle jetzt zwar nicht angegeben, aber durch den<br />
#include vor BeerBottle wird die Klasse vollständig definiert. Vielen<br />
Dank dennoch für die Vermutung.</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542180</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 06 Jul 2008 21:14:39 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration mit Vererbungsangabe on Sun, 06 Jul 2008 21:21:57 GMT]]></title><description><![CDATA[<p>Ich versteh nicht, wo du die Forward Declaration haben willst. Du inlucest bottle.h ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542185</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 06 Jul 2008 21:21:57 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration mit Vererbungsangabe on Sun, 06 Jul 2008 21:31:00 GMT]]></title><description><![CDATA[<p>Hallo drakon,</p>
<p>in Zeile 16. So wie sie da steht funktioniert sie leider nicht.<br />
Es geht also um BeerBottle nicht um Bottle. BeerBottle ist nicht in bottle.h<br />
definiert.</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542191</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 06 Jul 2008 21:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration mit Vererbungsangabe on Sun, 06 Jul 2008 21:43:00 GMT]]></title><description><![CDATA[<p>CSpille schrieb:</p>
<blockquote>
<p>Hallo drakon,</p>
<p>in Zeile 16. So wie sie da steht funktioniert sie leider nicht.<br />
Es geht also um BeerBottle nicht um Bottle. BeerBottle ist nicht in bottle.h<br />
definiert.</p>
<p>Gruß,<br />
CSpille</p>
</blockquote>
<p>Aso.<br />
Ne. Das geht nicht. Du hast BeerBottle ja noch nicht definiert.</p>
<p>Entweder</p>
<pre><code class="language-cpp">class BeerBottle : public Bottle; 

typedef Crate&lt;BeerBottle*&gt; BeerCrate;
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">class BeerBottle : public Bottle{} 

typedef Crate&lt;BeerBottle&gt; BeerCrate;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1542195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542195</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 06 Jul 2008 21:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration mit Vererbungsangabe on Sun, 06 Jul 2008 21:47:54 GMT]]></title><description><![CDATA[<p>Hey CSpille! Und wenn ich in der Kiste neben den ganzen Bierflaschen einen teuren Wein verstecken will damit ihn keiner findet? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542200</guid><dc:creator><![CDATA[Alcoholic]]></dc:creator><pubDate>Sun, 06 Jul 2008 21:47:54 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration mit Vererbungsangabe on Sun, 06 Jul 2008 22:27:02 GMT]]></title><description><![CDATA[<p>Hey drakon,</p>
<p>vielen Dank!!! Bisher klappt das mit der leeren Definition der Klasse gut.<br />
Allerdings befürchte ich, dass ich damit irgendwann in einer .cpp-Datei<br />
Probleme kriege, wenn ich BeerBottle-spezifische Funktionen aufrufe.<br />
Dann muss ich in der .cpp ja auch die beerbottle.h includieren und<br />
werde eine redefinition of class erhalten. Dann muss ich wohl doch includieren<br />
(oder Zeiger nehmen).</p>
<p>@Alcoholic: &quot;Normale&quot; Weinflaschen sind größer als Bierflaschen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542209</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 06 Jul 2008 22:27:02 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration mit Vererbungsangabe on Sun, 06 Jul 2008 22:33:56 GMT]]></title><description><![CDATA[<p>Also das Beispiel war nicht dazu gedacht, dass du eine leere Definition hast. Das ist eine Definition und da sollte alles reinkommen, was hald reingehört. Es wäre so schlichtweg einfach nicht möglich eine forward declaration zu machen, wenn du du Informationen zum ganen Objekt brauchst.</p>
<p>Allerdings solltest du nicht zwanghaft veruschen nur forward declaration zu haben. Meistens ist es ohne Probleme möglich normal zu inluden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542214</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 06 Jul 2008 22:33:56 GMT</pubDate></item></channel></rss>