<?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[#include problem]]></title><description><![CDATA[<p>Hi, ich hab leider ein kleines Problem mit includes.<br />
Ich habe zwei Klassen die miteinander interagieren sollen - also jede auch auf die andere zugreifen. Sobald ich aber im header auch die andere include gibt es compile fehler.</p>
<p>Um zu zeigen was ich meine hier ein mini test-Programm das genau diesen Fehler erzeugt...</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;test1.h&quot;
#include &quot;test2.h&quot;
int main()
{
	std::cout &lt;&lt; &quot;Hello world!&quot; &lt;&lt; std::endl;
	Test1 *test = new Test1(new Test2());
	return 0;
}
</code></pre>
<p>test1.h</p>
<pre><code class="language-cpp">#ifndef TEST1_H
#define TEST1_H
#include &quot;test1.h&quot;
#include &quot;test2.h&quot;

class Test1
{
  public:
    Test1(Test2 *test);
    virtual ~Test1();
};

#endif // TEST1_H
</code></pre>
<p>test2.h</p>
<pre><code class="language-cpp">#ifndef TEST2_H
#define TEST2_H

#include &quot;test1.h&quot;

class Test2
{
  public:
    Test2();
    virtual ~Test2();
  private:
    Test1 *m_test;
};

#endif // TEST2_H
</code></pre>
<p>Compile log:</p>
<pre><code>Compiler  : GNU GCC Compiler (called directly)
Directory : D:\projects\ClassTest\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: test1.cpp
In file included from test1.h:4,
                 from test1.cpp:1:
test2.h:12: error: ISO C++ forbids declaration of `Test1' with no type
test2.h:12: error: expected `;' before '*' token
Process terminated with status 1 (0 minutes, 0 seconds)
</code></pre>
<p>Ich bin leider echt am verzweifeln. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Übrigens, wenn ich das &quot;Test1 *m_test;&quot; aus der test2.h weglasse hängt er sich mit der meldung</p>
<pre><code>test1.h:9: error: expected `)' before '*' token
</code></pre>
<p>in der test1.h auf, so lange bis ich aus der test2.h den <em>#include &quot;test1.h&quot;</em> weg mache - dann geht der compile ohne Probleme...</p>
<p>Würde mich echt freuen, wenn mir jemand helfen kann!<br />
Vielen Dank im Vorraus!<br />
-BBB</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/152976/include-problem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 05:33:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/152976.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Jul 2006 17:30:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to #include problem on Tue, 11 Jul 2006 17:31:53 GMT]]></title><description><![CDATA[<p>Hi, ich hab leider ein kleines Problem mit includes.<br />
Ich habe zwei Klassen die miteinander interagieren sollen - also jede auch auf die andere zugreifen. Sobald ich aber im header auch die andere include gibt es compile fehler.</p>
<p>Um zu zeigen was ich meine hier ein mini test-Programm das genau diesen Fehler erzeugt...</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;test1.h&quot;
#include &quot;test2.h&quot;
int main()
{
	std::cout &lt;&lt; &quot;Hello world!&quot; &lt;&lt; std::endl;
	Test1 *test = new Test1(new Test2());
	return 0;
}
</code></pre>
<p>test1.h</p>
<pre><code class="language-cpp">#ifndef TEST1_H
#define TEST1_H
#include &quot;test1.h&quot;
#include &quot;test2.h&quot;

class Test1
{
  public:
    Test1(Test2 *test);
    virtual ~Test1();
};

#endif // TEST1_H
</code></pre>
<p>test2.h</p>
<pre><code class="language-cpp">#ifndef TEST2_H
#define TEST2_H

#include &quot;test1.h&quot;

class Test2
{
  public:
    Test2();
    virtual ~Test2();
  private:
    Test1 *m_test;
};

#endif // TEST2_H
</code></pre>
<p>Compile log:</p>
<pre><code>Compiler  : GNU GCC Compiler (called directly)
Directory : D:\projects\ClassTest\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: test1.cpp
In file included from test1.h:4,
                 from test1.cpp:1:
test2.h:12: error: ISO C++ forbids declaration of `Test1' with no type
test2.h:12: error: expected `;' before '*' token
Process terminated with status 1 (0 minutes, 0 seconds)
</code></pre>
<p>Ich bin leider echt am verzweifeln. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Übrigens, wenn ich das &quot;Test1 *m_test;&quot; aus der test2.h weglasse hängt er sich mit der meldung</p>
<pre><code>test1.h:9: error: expected `)' before '*' token
</code></pre>
<p>in der test1.h auf, so lange bis ich aus der test2.h den <em>#include &quot;test1.h&quot;</em> weg mache - dann geht der compile ohne Probleme...</p>
<p>Würde mich echt freuen, wenn mir jemand helfen kann!<br />
Vielen Dank im Vorraus!<br />
-BBB</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095939</guid><dc:creator><![CDATA[BigBadaBoom]]></dc:creator><pubDate>Tue, 11 Jul 2006 17:31:53 GMT</pubDate></item><item><title><![CDATA[Reply to #include problem on Tue, 11 Jul 2006 17:54:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>du bist auf der Suche nach forward declaration.</p>
<p>Nimm das include test1.h aus test2.h raus und ersetze es durch ein<br />
class Test1, dann klappt's auch mit g++.</p>
<p>Gruessle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095947</guid><dc:creator><![CDATA[__maximus__]]></dc:creator><pubDate>Tue, 11 Jul 2006 17:54:57 GMT</pubDate></item><item><title><![CDATA[Reply to #include problem on Tue, 11 Jul 2006 18:57:12 GMT]]></title><description><![CDATA[<p>Es funktioniert! Vielen vielen Dank! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095979</guid><dc:creator><![CDATA[BigBadaBoom]]></dc:creator><pubDate>Tue, 11 Jul 2006 18:57:12 GMT</pubDate></item><item><title><![CDATA[Reply to #include problem on Wed, 12 Jul 2006 08:27:52 GMT]]></title><description><![CDATA[<p>BigBadaBoom schrieb:</p>
<blockquote>
<p>test1.h</p>
<pre><code class="language-cpp">#ifndef TEST1_H
#define TEST1_H
#include &quot;test1.h&quot;
#include &quot;test2.h&quot;

class Test1
{
  public:
    Test1(Test2 *test);
    virtual ~Test1();
};

#endif // TEST1_H
</code></pre>
</blockquote>
<p>Hm, ich versteh nicht, warum die test1.h in die test1.h inkludierst. Ist das nicht überflüssig? oder soll das die test1.cpp sein?<br />
Sorry, wenn ich hier was falsch versteh, bin noch Anfänger und wüsste gern, warum das &quot;doppelt-gemoppelt&quot; ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1096203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1096203</guid><dc:creator><![CDATA[nki]]></dc:creator><pubDate>Wed, 12 Jul 2006 08:27:52 GMT</pubDate></item><item><title><![CDATA[Reply to #include problem on Wed, 12 Jul 2006 08:31:50 GMT]]></title><description><![CDATA[<p>Vermutlich, weil er versucht hat, es &quot;zum Laufen zu kriegen&quot;.</p>
<p>Das ist natürlich wirklich überflüssig. Gesucht war die Vorwärtsdeklaration, also eine Methode, dem Compiler eine Klasse bekannt zu machen, ohne die Klasse zu implementieren.</p>
<pre><code>class Test1;

class Test2
{
... zeug
}
</code></pre>
<p>heißt also:</p>
<p>&quot;Achtung Compiler. Es gibt eine Klasse Test1, die kommt aber später. Rechne also damit, daß ich Test1 in Test2 verwende, und kümmere dich später darum, daß dort die irgendwo anders implementierte Klasse Test1 verwendet wird.&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1096210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1096210</guid><dc:creator><![CDATA[Sid2K6]]></dc:creator><pubDate>Wed, 12 Jul 2006 08:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to #include problem on Thu, 13 Jul 2006 14:36:21 GMT]]></title><description><![CDATA[<p>Yep, war mein fehler, hab nur schnell ein paar kleine Klassen zusammen gekrizelt um das Problem zu demonstrieren - hab wohl nicht so ganz drauf geachtet, was wo included wurde solange ich den gleichen Fehler produziert habe. <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/1097186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1097186</guid><dc:creator><![CDATA[BigBadaBoom]]></dc:creator><pubDate>Thu, 13 Jul 2006 14:36:21 GMT</pubDate></item></channel></rss>