<?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[Probleme mit Including]]></title><description><![CDATA[<p>Hey!</p>
<p>Ich dachte, sowas würde mir nicht mehr passieren. Aber anscheinend habe ich keinen Plan, was ich da überhaupt tue.</p>
<p>Nun, das Klassendesign bitte nicht beachten, dies sind meine ersten Versuche... Es geht um Abhängigkeiten, ich habe versucht den Fehler so einfach wie nur möglich zu reproduzieren:</p>
<p>SceneNode.h</p>
<pre><code class="language-cpp">#pragma once

class RenderManager;

class SceneNode
{
	virtual void Render(const RenderManager&amp;);
};
</code></pre>
<p>SpriteNode.h</p>
<pre><code class="language-cpp">#pragma once

#include &quot;SceneNode.h&quot;
#include &quot;RenderManager.h&quot; // Wenn inkludiert =&gt; Fehler
// class RenderManager; // So würde kein Fehler auftreten...

class SpriteNode : public SceneNode
{
	void Render(const RenderManager&amp;);
};
</code></pre>
<p>RenderManager.h</p>
<pre><code class="language-cpp">#pragma once

#include &quot;SpriteNode.h&quot;

class RenderManager
{
	void AddSpriteNode(SpriteNode*);
};
</code></pre>
<p>Und zwar Folgender Fehler:</p>
<pre><code>rendermanager.h(7) : error C2061: syntax error : identifier 'SpriteNode'
</code></pre>
<p>Wenn ich <em>#include &quot;RenderManager.h&quot;</em> in <em>SpriteNode.h</em> durch eine forward-declaration ersetze (<em>class RenderManager;</em>), dann tritt das Problem nicht auf.</p>
<p>Aber warum? Was mache ich falsch? Ein Konflikt? Es kann doch nicht so schwer sein, ein paar kleine Abhängigkeiten zu setzen, wie ist das denn dann mit großen Projekten?</p>
<p><strong>Achja, noch etwas:</strong><br />
Wenn ich die forward-declaration <em>&quot;class RenderManager;&quot;</em> in <em>SceneNode.h</em> durch ein <em>#include &quot;RenderManager.h&quot;</em> ersetze, gibt es noch mehr Fehler:</p>
<pre><code>scenenode.h(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
scenenode.h(8) : error C2143: syntax error : missing ',' before '&amp;'
spritenode.h(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
spritenode.h(8) : error C2143: syntax error : missing ',' before '&amp;'
spritenode.h(7) : error C2504: 'SceneNode' : base class undefined
spritenode.h(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
spritenode.h(8) : error C2143: syntax error : missing ',' before '&amp;'
rendermanager.h(7) : error C2061: syntax error : identifier 'SpriteNode'
</code></pre>
<p>Was ist da los? Wie mache ich es besser? Auf was muss ich generell achten?<br />
Früher habe ich nie forward declarations verwendet, und hatte soweit ich mich erinnern kann nie Probleme...</p>
<p>Danke!<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215754/probleme-mit-including</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 17:40:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215754.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Jun 2008 00:34:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit Including on Sun, 15 Jun 2008 00:36:25 GMT]]></title><description><![CDATA[<p>Hey!</p>
<p>Ich dachte, sowas würde mir nicht mehr passieren. Aber anscheinend habe ich keinen Plan, was ich da überhaupt tue.</p>
<p>Nun, das Klassendesign bitte nicht beachten, dies sind meine ersten Versuche... Es geht um Abhängigkeiten, ich habe versucht den Fehler so einfach wie nur möglich zu reproduzieren:</p>
<p>SceneNode.h</p>
<pre><code class="language-cpp">#pragma once

class RenderManager;

class SceneNode
{
	virtual void Render(const RenderManager&amp;);
};
</code></pre>
<p>SpriteNode.h</p>
<pre><code class="language-cpp">#pragma once

#include &quot;SceneNode.h&quot;
#include &quot;RenderManager.h&quot; // Wenn inkludiert =&gt; Fehler
// class RenderManager; // So würde kein Fehler auftreten...

class SpriteNode : public SceneNode
{
	void Render(const RenderManager&amp;);
};
</code></pre>
<p>RenderManager.h</p>
<pre><code class="language-cpp">#pragma once

#include &quot;SpriteNode.h&quot;

class RenderManager
{
	void AddSpriteNode(SpriteNode*);
};
</code></pre>
<p>Und zwar Folgender Fehler:</p>
<pre><code>rendermanager.h(7) : error C2061: syntax error : identifier 'SpriteNode'
</code></pre>
<p>Wenn ich <em>#include &quot;RenderManager.h&quot;</em> in <em>SpriteNode.h</em> durch eine forward-declaration ersetze (<em>class RenderManager;</em>), dann tritt das Problem nicht auf.</p>
<p>Aber warum? Was mache ich falsch? Ein Konflikt? Es kann doch nicht so schwer sein, ein paar kleine Abhängigkeiten zu setzen, wie ist das denn dann mit großen Projekten?</p>
<p><strong>Achja, noch etwas:</strong><br />
Wenn ich die forward-declaration <em>&quot;class RenderManager;&quot;</em> in <em>SceneNode.h</em> durch ein <em>#include &quot;RenderManager.h&quot;</em> ersetze, gibt es noch mehr Fehler:</p>
<pre><code>scenenode.h(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
scenenode.h(8) : error C2143: syntax error : missing ',' before '&amp;'
spritenode.h(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
spritenode.h(8) : error C2143: syntax error : missing ',' before '&amp;'
spritenode.h(7) : error C2504: 'SceneNode' : base class undefined
spritenode.h(8) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
spritenode.h(8) : error C2143: syntax error : missing ',' before '&amp;'
rendermanager.h(7) : error C2061: syntax error : identifier 'SpriteNode'
</code></pre>
<p>Was ist da los? Wie mache ich es besser? Auf was muss ich generell achten?<br />
Früher habe ich nie forward declarations verwendet, und hatte soweit ich mich erinnern kann nie Probleme...</p>
<p>Danke!<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1529318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1529318</guid><dc:creator><![CDATA[ceplusplus*loggedoff]]></dc:creator><pubDate>Sun, 15 Jun 2008 00:36:25 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Including on Sun, 15 Jun 2008 05:31:36 GMT]]></title><description><![CDATA[<p>ceplusplus@loggedoff schrieb:</p>
<blockquote>
<p>Es kann doch nicht so schwer sein, ein paar kleine Abhängigkeiten zu setzen</p>
</blockquote>
<p>Wenn du zyklische Abhängigkeiten hast, schon:</p>
<p>RenderManager.h und SpriteNode.h binden sich gegenseitig ein, d.h. in RenderManager.h sagst du, dass der Inhalt von SpriteNode.h bekannt sein muss (also davor stehen muss), und in SpriteNode.h sagst du, dass der Inhalt von RenderManager.h bekannt sein muss. Denn genau das sagt die Includedirektive aus.</p>
<p>Diese Abhängigkeiten sind nicht auflösbar.</p>
<p>Durch die Pragmas wird der Kreis zwar aufgebrochen. Dann steht dadurch eben derjenige Header &quot;hinten&quot;, der durch die jeweilige Übersetzungseinheit zuerst eingebunden wird, der andere steht &quot;vorne&quot;. Aber eine der beiden Abhängigkeiten ist eben nicht erfüllt, daher die Fehlermeldungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1529329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1529329</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Sun, 15 Jun 2008 05:31:36 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Including on Sun, 15 Jun 2008 12:54:22 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>Dann steht dadurch eben derjenige Header &quot;hinten&quot;, der durch die jeweilige Übersetzungseinheit zuerst eingebunden wird, der andere steht &quot;vorne&quot;.</p>
</blockquote>
<p>Wie meinst du das?</p>
<p>Und.. wie mache ich es dann richtig? Forward declarations kann man ja auch nicht immer verwenden...<br />
Man wird dann ja eigentlich total eingeschränkt.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1529459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1529459</guid><dc:creator><![CDATA[ceplusplus*loggedoff]]></dc:creator><pubDate>Sun, 15 Jun 2008 12:54:22 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Including on Sun, 15 Jun 2008 13:13:32 GMT]]></title><description><![CDATA[<p>ceplusplus@loggedoff schrieb:</p>
<blockquote>
<p>[Und.. wie mache ich es dann richtig? Forward declarations kann man ja auch nicht immer verwenden...<br />
Man wird dann ja eigentlich total eingeschränkt.</p>
</blockquote>
<p>Eigentlich garnicht. In der Regel deuten Probleme hiermit eher auf Designprobleme zurück. Echte zyklische Abhängigkeiten sollte man sprachunabhängig immer versuchen zu vermeiden.</p>
<p>Ganz davon abgesehen lassen sich ja alleine deine hier gezeigten Fälle mittels &quot;Forward declaration&quot; lößen. Nutze dies auch. Includes gehören soweit möglich immer in den Source (Reduzierung der Linkzeiten...).</p>
<p>Und wenn du dir ein Henne/Ei Probem schaffst, musst du damit klarkommen das Compiler nunmal nicht philosophisch sind <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>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1529473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1529473</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 15 Jun 2008 13:13:32 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Including on Fri, 04 Jul 2008 15:20:39 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
sollte das ganze etwas zu MFC lastig sein, hilft es, die<br />
eigenen includes nach dem Eintrag</p>
<p>#include &lt;afxwin.h&gt; // MFC core and standard components</p>
<p>in der stdafx.h einzutragen.</p>
<p>Gruß</p>
<p>jens Bonnermann<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541095</guid><dc:creator><![CDATA[6502]]></dc:creator><pubDate>Fri, 04 Jul 2008 15:20:39 GMT</pubDate></item></channel></rss>