<?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[&#x27;Incomplete Type&#x27; bei class-forward mit Unterklassen]]></title><description><![CDATA[<p>Ich versuche eine Verbindung zwischen zwei Klassen herzustellen.(World und Villager)</p>
<p>Villager ist eine erbende Klasse von Entity.<br />
Beide Klassen tauchen bei beiden deklarationen auf, wobei World ein Pointer in Villager darstellt und Villager eine richtige Instanz bei World.<br />
Beim gegenseitigen includieren scheint der Compiler Probleme zu haben herauszufinden , wie viel Speicher für Villager gebraucht wird.</p>
<p>Fehlermeldung : &quot; world.h|15|error: field 'ent' has incomplete type| &quot;</p>
<p>Das wars zur EInleitung, hier die konkreten Daten :</p>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;Entity.h&quot;
#include &quot;World.h&quot;

#include &quot;conio.h&quot;

int main()
{
    World s;
    s.Draw();

    getch();
}
</code></pre>
<p><strong>World.h</strong></p>
<pre><code class="language-cpp">#ifndef WORLD
#define WORLD

class Villager;

class World
{
    public :

        World();

        void Draw();

        Villager ent;
};

#endif // WORLD
</code></pre>
<p><strong>World.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;World.h&quot;
#include &quot;Villager.h&quot;

World::World()
{

}

void World::Draw()
{
    ent.Draw();
}
</code></pre>
<p><strong>Entity.h</strong></p>
<pre><code class="language-cpp">#ifndef ENTITY
#define ENTITY

#include &lt;iostream&gt;
using namespace std;
#include &lt;conio.h&gt;

class Entity
{
    public :

        Entity(){}

        virtual void Draw() = 0;

    private :

    float x,y;

};

#endif // ENTITY
</code></pre>
<p><strong>Entity.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;Entity.h&quot;

Entity::Entity()
{

}
</code></pre>
<p><strong>Villager.h</strong></p>
<pre><code class="language-cpp">#ifndef VILLAGER
#define VILLAGER

#include &quot;Entity.h&quot;
#include &quot;world.h&quot;

class World;

class Villager : public Entity
{
    public:
        Villager();
        void Draw();
    protected:
    private:

        World* m_pWorld;
};

#endif // VILLAGER
</code></pre>
<p><strong>Villager.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;Villager.h&quot;
#include &quot;World.h&quot;

Villager::Villager()
{
    //ctor
}

void Villager::Draw()
{
    cout &lt;&lt; &quot;Villager : \&quot;HI\&quot; &quot;;
}
</code></pre>
<p>Die Vorgehensweise orientiert sich danach : <a href="http://www.adp-gmbh.ch/cpp/forward_decl.html" rel="nofollow">http://www.adp-gmbh.ch/cpp/forward_decl.html</a></p>
<p>Ich hoffe ihr könnt mir helfen : D</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/282838/incomplete-type-bei-class-forward-mit-unterklassen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 23:40:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/282838.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Feb 2011 19:29:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &#x27;Incomplete Type&#x27; bei class-forward mit Unterklassen on Sun, 27 Feb 2011 19:29:47 GMT]]></title><description><![CDATA[<p>Ich versuche eine Verbindung zwischen zwei Klassen herzustellen.(World und Villager)</p>
<p>Villager ist eine erbende Klasse von Entity.<br />
Beide Klassen tauchen bei beiden deklarationen auf, wobei World ein Pointer in Villager darstellt und Villager eine richtige Instanz bei World.<br />
Beim gegenseitigen includieren scheint der Compiler Probleme zu haben herauszufinden , wie viel Speicher für Villager gebraucht wird.</p>
<p>Fehlermeldung : &quot; world.h|15|error: field 'ent' has incomplete type| &quot;</p>
<p>Das wars zur EInleitung, hier die konkreten Daten :</p>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;Entity.h&quot;
#include &quot;World.h&quot;

#include &quot;conio.h&quot;

int main()
{
    World s;
    s.Draw();

    getch();
}
</code></pre>
<p><strong>World.h</strong></p>
<pre><code class="language-cpp">#ifndef WORLD
#define WORLD

class Villager;

class World
{
    public :

        World();

        void Draw();

        Villager ent;
};

#endif // WORLD
</code></pre>
<p><strong>World.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;World.h&quot;
#include &quot;Villager.h&quot;

World::World()
{

}

void World::Draw()
{
    ent.Draw();
}
</code></pre>
<p><strong>Entity.h</strong></p>
<pre><code class="language-cpp">#ifndef ENTITY
#define ENTITY

#include &lt;iostream&gt;
using namespace std;
#include &lt;conio.h&gt;

class Entity
{
    public :

        Entity(){}

        virtual void Draw() = 0;

    private :

    float x,y;

};

#endif // ENTITY
</code></pre>
<p><strong>Entity.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;Entity.h&quot;

Entity::Entity()
{

}
</code></pre>
<p><strong>Villager.h</strong></p>
<pre><code class="language-cpp">#ifndef VILLAGER
#define VILLAGER

#include &quot;Entity.h&quot;
#include &quot;world.h&quot;

class World;

class Villager : public Entity
{
    public:
        Villager();
        void Draw();
    protected:
    private:

        World* m_pWorld;
};

#endif // VILLAGER
</code></pre>
<p><strong>Villager.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;Villager.h&quot;
#include &quot;World.h&quot;

Villager::Villager()
{
    //ctor
}

void Villager::Draw()
{
    cout &lt;&lt; &quot;Villager : \&quot;HI\&quot; &quot;;
}
</code></pre>
<p>Die Vorgehensweise orientiert sich danach : <a href="http://www.adp-gmbh.ch/cpp/forward_decl.html" rel="nofollow">http://www.adp-gmbh.ch/cpp/forward_decl.html</a></p>
<p>Ich hoffe ihr könnt mir helfen : D</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2027389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2027389</guid><dc:creator><![CDATA[Dman]]></dc:creator><pubDate>Sun, 27 Feb 2011 19:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;Incomplete Type&#x27; bei class-forward mit Unterklassen on Sun, 27 Feb 2011 19:52:37 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung sagt ja eigentlich bereits wo das Problem liegt, aber wenn du verstehen willst warum das so ist und was du dagegen machen kannst siehe <a href="http://www.drakon.ch/?id=&amp;offset=5&amp;mobile=0&amp;show_entry=77" rel="nofollow">hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2027399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2027399</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 27 Feb 2011 19:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;Incomplete Type&#x27; bei class-forward mit Unterklassen on Sun, 27 Feb 2011 20:08:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#ifndef WORLD
#define WORLD

#include &quot;Villager.h&quot; //Wird komplett gebraucht

class World
{
    public :

        World();

        void Draw();

        Villager ent;
};

#endif // WORLD
</code></pre>
<pre><code class="language-cpp">#ifndef VILLAGER
#define VILLAGER

#include &quot;Entity.h&quot;

//#include &quot;world.h&quot; //darf nicht, sonst wirds zyklisch

class World;

class Villager : public Entity
{
    public:
        Villager();
        void Draw();
    protected:
    private:

        World* m_pWorld;
};

#include &quot;World.h&quot; //danach darf aber, das ist fein.

#endif // VILLAGER
</code></pre>
<pre><code class="language-cpp">#ifndef ENTITY
#define ENTITY

#include &lt;iostream&gt;
using namespace std;
#include &lt;conio.h&gt;

class Entity
{
    public :

        Entity();//hier war aus versehen {}

        virtual void Draw() = 0;

    private :

    float x,y;

};

#endif // ENTITY
</code></pre>
<pre><code class="language-cpp">//#include &quot;Entity.h&quot; nicht menr nötig
#include &quot;World.h&quot;

#include &quot;conio.h&quot;

int main()
{
    World s;
    s.Draw();

    getch();
}
</code></pre>
<pre><code class="language-cpp">#include &quot;World.h&quot;
//#include &quot;Villager.h&quot; //nicht menr nötig
#include &quot;Entity.h&quot; //hübsch, weil ent.Draw() verwendet wird

World::World()
{

}

void World::Draw()
{
    ent.Draw();
}
</code></pre>
<pre><code class="language-cpp">#include &quot;Villager.h&quot;
//#include &quot;World.h&quot; //nicht mehr nötig

Villager::Villager()
{
    //ctor
}

void Villager::Draw()
{
    cout &lt;&lt; &quot;Villager : \&quot;HI\&quot; &quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2027400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2027400</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 27 Feb 2011 20:08:06 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;Incomplete Type&#x27; bei class-forward mit Unterklassen on Mon, 28 Feb 2011 18:23:12 GMT]]></title><description><![CDATA[<p>Hey, danke euch beiden.<br />
Hat prima geklappt : D</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2027772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2027772</guid><dc:creator><![CDATA[Dman]]></dc:creator><pubDate>Mon, 28 Feb 2011 18:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;Incomplete Type&#x27; bei class-forward mit Unterklassen on Mon, 28 Feb 2011 20:02:06 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Die Fehlermeldung sagt ja eigentlich bereits wo das Problem liegt, aber wenn du verstehen willst warum das so ist und was du dagegen machen kannst siehe <a href="http://www.drakon.ch/?id=&amp;offset=5&amp;mobile=0&amp;show_entry=77" rel="nofollow">hier</a>.</p>
</blockquote>
<p>mal ganz ehrlich?<br />
du hast mir grad die nächsten tage gerettet...<br />
ich dachte man muss forward declaren UND includen</p>
<p>me: &lt;--- fail</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2027816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2027816</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 28 Feb 2011 20:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;Incomplete Type&#x27; bei class-forward mit Unterklassen on Mon, 28 Feb 2011 20:14:28 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>Die Fehlermeldung sagt ja eigentlich bereits wo das Problem liegt, aber wenn du verstehen willst warum das so ist und was du dagegen machen kannst siehe <a href="http://www.drakon.ch/?id=&amp;offset=5&amp;mobile=0&amp;show_entry=77" rel="nofollow">hier</a>.</p>
</blockquote>
<p>mal ganz ehrlich?<br />
du hast mir grad die nächsten tage gerettet...<br />
ich dachte man muss forward declaren UND includen</p>
<p>me: &lt;--- fail</p>
</blockquote>
<p>Das ist wohl der Artikel, den bereits am meisten geholfen hat. Ich verstehe nicht warum den nur so wenig liken.. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2027825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2027825</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 28 Feb 2011 20:14:28 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;Incomplete Type&#x27; bei class-forward mit Unterklassen on Mon, 28 Feb 2011 20:21:07 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Das ist wohl der Artikel, den bereits am meisten geholfen hat. Ich verstehe nicht warum den nur so wenig liken.. <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>
</blockquote>
<p>Du hast in Deiner Sig noch Platz dafür.<br />
Ich hatte damals leider keine Anleitung und wochenlang rumgeraten und vertagt, bevor ich es gerafft hatte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2027831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2027831</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 28 Feb 2011 20:21:07 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;Incomplete Type&#x27; bei class-forward mit Unterklassen on Mon, 28 Feb 2011 20:22:09 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>Die Fehlermeldung sagt ja eigentlich bereits wo das Problem liegt, aber wenn du verstehen willst warum das so ist und was du dagegen machen kannst siehe <a href="http://www.drakon.ch/?id=&amp;offset=5&amp;mobile=0&amp;show_entry=77" rel="nofollow">hier</a>.</p>
</blockquote>
<p>mal ganz ehrlich?<br />
du hast mir grad die nächsten tage gerettet...<br />
ich dachte man muss forward declaren UND includen</p>
<p>me: &lt;--- fail</p>
</blockquote>
<p>Das ist wohl der Artikel, den bereits am meisten geholfen hat. Ich verstehe nicht warum den nur so wenig liken.. <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>
</blockquote>
<p><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="😉"
    /> geändert:)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2027833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2027833</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 28 Feb 2011 20:22:09 GMT</pubDate></item></channel></rss>