<?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[Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1]]></title><description><![CDATA[<p>Hi</p>
<p>die Frage steht schon im Titel. Kann ich nicht in Datei 1 eine andere Datei includen und in dieser dann wiederrum Datei 1?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/236360/kann-man-nicht-datei-1-in-datei-2-includen-und-gleichzeitig-in-datei-2-datei-1</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 22:14:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236360.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Mar 2009 20:32:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Fri, 13 Mar 2009 20:32:13 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>die Frage steht schon im Titel. Kann ich nicht in Datei 1 eine andere Datei includen und in dieser dann wiederrum Datei 1?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679619</guid><dc:creator><![CDATA[Luke-2]]></dc:creator><pubDate>Fri, 13 Mar 2009 20:32:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Fri, 13 Mar 2009 20:37:57 GMT]]></title><description><![CDATA[<p>doch, mit #include guards</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679623</guid><dc:creator><![CDATA[u_ser-l]]></dc:creator><pubDate>Fri, 13 Mar 2009 20:37:57 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Fri, 13 Mar 2009 20:43:26 GMT]]></title><description><![CDATA[<p>Luke-2 schrieb:</p>
<blockquote>
<p>Hi</p>
<p>die Frage steht schon im Titel. Kann ich nicht in Datei 1 eine andere Datei includen und in dieser dann wiederrum Datei 1?</p>
</blockquote>
<p>Stell dir mal folgendes vor: du hast zwei Kartons, ich nenne diese mal Karton A und Karton B. Jetzt versuche einmal Karton A zusammenzufalten und in Karton B zu legen und danach Karton B zusammenzufalten und in Karton A zu legen.<br />
Falls du das schaffst kannst du das Prinzip auf die beiden Dateien übertragen.</p>
<p>Und falls schau dir mal Forwärtsdeklarationen (forward declarations) an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679624</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Fri, 13 Mar 2009 20:43:26 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Fri, 13 Mar 2009 20:44:17 GMT]]></title><description><![CDATA[<p>Da hat sich doch glatt der Fehlerteufel eingeschlichen, hier die korrigierte Version</p>
<p>Tippgeber schrieb:</p>
<blockquote>
<p>Luke-2 schrieb:</p>
<blockquote>
<p>Hi</p>
<p>die Frage steht schon im Titel. Kann ich nicht in Datei 1 eine andere Datei includen und in dieser dann wiederrum Datei 1?</p>
</blockquote>
<p>Stell dir mal folgendes vor: du hast zwei Kartons, ich nenne diese mal Karton A und Karton B. Jetzt versuche einmal Karton A zusammenzufalten und in Karton B zu legen und danach Karton B zusammenzufalten und in Karton A zu legen.<br />
Falls du das schaffst kannst du das Prinzip auf die beiden Dateien übertragen.</p>
<p>Und falls <strong>nicht</strong> schau dir mal Forwärtsdeklarationen (forward declarations) an.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1679626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679626</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Fri, 13 Mar 2009 20:44:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Fri, 13 Mar 2009 20:53:36 GMT]]></title><description><![CDATA[<p>Fragt sich jetzt, wozu das ueberhaupt gut sein soll.<br />
Was willst du denn machen?<br />
Sehe dabei keinen Sinn zwei Headerdateien gegenseitig zu includen.</p>
<p>gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679632</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Fri, 13 Mar 2009 20:53:36 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Fri, 13 Mar 2009 21:12:52 GMT]]></title><description><![CDATA[<p>geht schon:</p>
<p>a.cpp:</p>
<pre><code>#define A
const char *b = &quot;hallo&quot;;
#ifndef B
#include &quot;b.cpp&quot;
#endif
</code></pre>
<p>b.cpp:</p>
<pre><code>#define B
#ifndef A
#include &quot;a.cpp&quot;
#endif

#include&lt;stdio.h&gt;

int main(){ printf(&quot;%s\n&quot;, b); }
</code></pre>
<p>g++ -c a.cpp; g++ -c b.cpp; g++ b.o</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679638</guid><dc:creator><![CDATA[u_ser-l]]></dc:creator><pubDate>Fri, 13 Mar 2009 21:12:52 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Fri, 13 Mar 2009 22:28:45 GMT]]></title><description><![CDATA[<p>Luke-2 schrieb:</p>
<blockquote>
<p>Hi</p>
<p>die Frage steht schon im Titel. Kann ich nicht in Datei 1 eine andere Datei includen und in dieser dann wiederrum Datei 1?</p>
</blockquote>
<p>Tippgeber hat das ja schon richtig beschrieben noch einfacher wirds wenn du dir das ganze wie eine Liste vorstellst, bei datei 1 gehts los, drin steht include 2 also wird die 2 reingehauen in der Steht include 1 also landet die 1 zum 2. mal drin usw, das ganze dreht sich dann endlos lang im Kreis bis der Compiler es aufgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1679659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679659</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Fri, 13 Mar 2009 22:28:45 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Sat, 14 Mar 2009 01:49:03 GMT]]></title><description><![CDATA[<p>Also mit Include-Guards geht das schon.<br />
Der Sinn? Nuja oft mal Übersichtlichkeit...</p>
<pre><code class="language-cpp">// ------------------------------------
// foo.hpp
#ifndef FOO_HPP_INCLUDED
#define FOO_HPP_INCLUDED

// und/oder
#pragma once

class foo
{
public:
    void bar();
    // ...
    // ...
    // ...
};

#include &quot;foo.inl&quot;

#endif // FOO_HPP_INCLUDED

// ------------------------------------
// foo.inl:

#ifndef FOO_INL_INCLUDED
#define FOO_INL_INCLUDED

// und/oder
#pragma once

#include &quot;foo.hpp&quot;
#include &lt;conio.h&gt;

inline void foo::bar()
{
    printf(&quot;42&quot;);
}

// ...
// ...
// ...

// ...
// ...
// ...

#endif // FOO_INL_INCLUDED
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1679704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679704</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 14 Mar 2009 01:49:03 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Sat, 14 Mar 2009 13:54:32 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Also mit Include-Guards geht das schon.<br />
Der Sinn? Nuja oft mal Übersichtlichkeit...</p>
</blockquote>
<p>Das ist aber nicht das Selbe. Wie man in u_ser-l's Beispiel sieht packt man mit diesem Trick in jede Datei mehrere &quot;Dateien&quot; und kann immernoch nicht alle gleichzeitig nutzen, denn <em>g++ a.cpp b.c++</em> schlägt weiterhin fehl.<br />
Und genau darum geht es doch eigentlich, dass man eben nicht den Code von Datei 1 in dem Code von Datei 2 und umgekehrt gleichzeitig verwenden kann. Dafür gibt es doch die Forwärtsdeklaration, Zeiger und Funktionsdeklarationen <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/1679865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1679865</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Sat, 14 Mar 2009 13:54:32 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Sat, 14 Mar 2009 20:34:48 GMT]]></title><description><![CDATA[<p>Tippgeber schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Also mit Include-Guards geht das schon.<br />
Der Sinn? Nuja oft mal Übersichtlichkeit...</p>
</blockquote>
<p>Das ist aber nicht das Selbe. Wie man in u_ser-l's Beispiel sieht packt man mit diesem Trick in jede Datei mehrere &quot;Dateien&quot; und kann immernoch nicht alle gleichzeitig nutzen, denn <em>g++ a.cpp b.c++</em> schlägt weiterhin fehl.<br />
Und genau darum geht es doch eigentlich, dass man eben nicht den Code von Datei 1 in dem Code von Datei 2 und umgekehrt gleichzeitig verwenden kann. Dafür gibt es doch die Forwärtsdeklaration, Zeiger und Funktionsdeklarationen <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>
</blockquote>
<p>Was &quot;dasselbe&quot; ist interessiert mich nicht.</p>
<p>Ich habe mich auf die ursprüngliche Fragestellung bezogen, und nicht auf u_ser-l's Posting.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1680076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680076</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 14 Mar 2009 20:34:48 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Sat, 14 Mar 2009 20:49:43 GMT]]></title><description><![CDATA[<p>Das #ifndef hab ich gemacht. Wieso ich halt frage ist folgendes: Ich hab eine Klasse &quot;Globals&quot; (und ja ich weiß Globale Variabeln (wofür ich die klasse tatsächlich verwende) sind ganz böse und gar nicht C++ und buuuh, und so weiter, ich mach das für ein projekt was DI abgegeben werden muss und ich hab wirklich kaum noch zeit und da wird das ende quick-and-dirty), die so aussieht:</p>
<p>Globals.h:</p>
<pre><code class="language-cpp">#ifndef GLOBALS_H
#define GLOBALS_H

#include &quot;Controls.h&quot;
#include &quot;MainMenu.h&quot;
#include &quot;DocumentViewer.h&quot;

class Globals {

private:
	static Controls *control_handler;
	static MainMenu *main_menu;
	static DocumentViewer *document_viewer;

public:
	static void set_ch(Controls *ch);
	static void set_mm(MainMenu *mm);
	static void set_dv(DocumentViewer *dv);

	static Controls* get_ch();
	static MainMenu* get_mm();
	static DocumentViewer* get_dv();
};

#endif
</code></pre>
<p>Ich include die in meiner main-datei und benutze auch Methoden aus der Klasse - ohne fehler. Wenn ich jetzt die Datei in &quot;MainMenu.h&quot; (welche wiederum in Globals.h includiert ist (siehe code)) includiere bekomme ich folgende fehler:</p>
<pre><code class="language-cpp">In file included from MainMenu.h (27) ,
                 from MainMenu.cpp (4) :
Globals.h (13) : error: ISO C++ forbids declaration of 'MainMenu' with no type
Globals.h (13) : error: expected ';' before '*' token
Globals.h (18) : error: 'MainMenu' has not been declared
Globals.h (22) : error: ISO C++ forbids declaration of 'MainMenu' with no type
Globals.h (22) : error: expected ';' before '*' token
</code></pre>
<p>Zeile 13 ist</p>
<pre><code class="language-cpp">static MainMenu *main_menu;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1680086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680086</guid><dc:creator><![CDATA[Luke-2.1]]></dc:creator><pubDate>Sat, 14 Mar 2009 20:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Sat, 14 Mar 2009 21:21:48 GMT]]></title><description><![CDATA[<p>Diese gegenseitige Abhängigkeit funktioniert nicht. Für <code>Globals</code> muss <code>MainMenu</code> bekannt sein und umgekehrt. Wie soll das gehen? Wie schon erwähnt stellen hier Vorwärtsdeklarationen eine Möglichkeit dar, da du innerhalb der Klasse nur Zeiger verwendest.</p>
<p>P.S. Eine <code>Globals</code> -Klasse ist nicht schöner als freie globale Variablen. Da machst du lieber einen Namensraum... <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/1680114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680114</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 14 Mar 2009 21:21:48 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Sat, 14 Mar 2009 21:56:34 GMT]]></title><description><![CDATA[<p>Versuchs wie Nexus bereits gesagt hat mal mit Forwärtsdeklarationen. Was auch gut Funktioniert ist die globalen in den cpp Dateien zu haben statt in den headern, um sie in mehreren cpp Dateien gleichzeitig zu nutzen gibt es das Schlüsselwort extern, kannst du dir ja mal anschaun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1680128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680128</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Sat, 14 Mar 2009 21:56:34 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Sat, 14 Mar 2009 22:20:26 GMT]]></title><description><![CDATA[<p>Xebov schrieb:</p>
<blockquote>
<p>Was auch gut Funktioniert ist die globalen in den cpp Dateien zu haben statt in den headern, um sie in mehreren cpp Dateien gleichzeitig zu nutzen gibt es das Schlüsselwort extern, kannst du dir ja mal anschaun.</p>
</blockquote>
<p>Das läuft etwa auf das gleiche hinaus wie <code>static</code> -Variablen in Klassen und hat nicht direkt mit dem Problem zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1680143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1680143</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 14 Mar 2009 22:20:26 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Mon, 16 Mar 2009 21:00:57 GMT]]></title><description><![CDATA[<p>Hmmm irgendwie krieg ich das nicht gebacken, und ich hab auch bei google nix passendes dafür gefunden. Wennn ich das mit der forward declarations so mache dass ich in der Datei MainMenu.cpp statt dem &quot;#include Globals.h&quot; &quot;class Globals;&quot; schreibe kommt folgende Fehlermeldung:</p>
<pre><code class="language-cpp">MainMenu.cpp (142) : error: incomplete type 'Globals' used in nested name specifier
MainMenu.cpp (144) : error: incomplete type 'Globals' used in nested name specifier
</code></pre>
<p>Das (Zeile 142 und 144) sind die einzigen beiden Zeilen wo ich was aus der Globals-Klasse verwende:</p>
<pre><code class="language-cpp">Globals::get_dv()-&gt;open_file(&quot;test.txt&quot;);
Renderer::flush_gui_objects();
Renderer::add_gui_object(Globals::get_dv());
</code></pre>
<p><a href="http://bug.gd/search/details/76058/foo-cpp-error-incomplete-type-u2018nsidomcommentu2019-used-in-nested-name-specifier" rel="nofollow">Was der Fehler sagt</a> versteh ich, nur wie geh ich damit um, dazu hab ich nichts gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1681145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1681145</guid><dc:creator><![CDATA[Luke-2.1]]></dc:creator><pubDate>Mon, 16 Mar 2009 21:00:57 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Mon, 16 Mar 2009 21:04:06 GMT]]></title><description><![CDATA[<p>Du musst schauen, dass der Typ zum Zeitpunkt der Verwendung (in deinen beiden Zeilen) bekannt ist. Also muss der Header dann eingebunden sein - ich würde ihn gleich in die CPP-Datei, in der die Klasse verwendet wird, inkludieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1681146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1681146</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 16 Mar 2009 21:04:06 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Mon, 16 Mar 2009 21:32:22 GMT]]></title><description><![CDATA[<p>Vielen Dank, dachte irgendwie die Forward declaration würde das include ersetzen, aber jetzt hab ich's geschnallt, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1681172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1681172</guid><dc:creator><![CDATA[Luke-2.1]]></dc:creator><pubDate>Mon, 16 Mar 2009 21:32:22 GMT</pubDate></item><item><title><![CDATA[Reply to Kann man nicht Datei 1 in Datei 2 includen und gleichzeitig in Datei 2 Datei 1 on Mon, 16 Mar 2009 21:51:52 GMT]]></title><description><![CDATA[<p>Nein, die Vorwärtsdeklaration sagt dem Compiler nur, dass es einen Typ mit diesem Namen gibt. So können beispielsweise Zeiger darauf deklariert werden. Sobald man jedoch den Typen verwendet (z.B. eine Instanz erstellt, auf Klassenattribute zugreift, Werte ändert, den <code>sizeof</code> -Operator anwendet, ...), muss dieser vollständig definiert sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1681183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1681183</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 16 Mar 2009 21:51:52 GMT</pubDate></item></channel></rss>