<?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[Zirkulare Abhängikeit bei #include ??]]></title><description><![CDATA[<p>Hallo, ich habe mir zwei Klassen geschrieben Vector3D und Point3D. Nun muss sowohl Vector3D auf Inhalte von Point3D als auch anders herum zugreifen. Dabei bekomme ich folgende Fehlermeldung:</p>
<pre><code>In file included from point3d.h:4,
                 from point3d.cpp:5:
vector3d.h:18: error: syntax error before `,' token

In file included from vector3d.h:50,
                 from point3d.h:4,
                 from point3d.cpp:5:

vector3d.cpp:29: error: syntax error before `,' token

vector3d.cpp:29: confused by earlier errors, bailing out

make.exe: *** [point3d.o] Error 1
</code></pre>
<p>Dabei habe ich folgende Headerdateien:</p>
<pre><code class="language-cpp">#ifndef VECTOR3D_H_
#define VECTOR3D_H_

#include &quot;point3d.h&quot;

template&lt;class T&gt; class Vector3D {

    private:
        //-(Variablen)----------------------------------------------------------
        T n[3]; // x, y, z

    public:

        //-(Konstruktoren)------------------------------------------------------
        inline Vector3D(); // Vektor mit (0,0,0)
        inline Vector3D(const T x, const T y, const T z); // Vektor mit (x,y,z)
        inline Vector3D(const Vector3D&lt;T&gt;&amp; v); // Vektor mit (v.x, v.y, v.z)
        inline Vector3D(const Point3D&lt;T&gt; a, const Point3D&lt;T&gt; b); // Erstellt einen Vektor der von a nach b zeigt.

    ...

};

#include &quot;vector3d.cpp&quot; // wegen eines Templatebugs in verschiedenen Compilern.

#endif // VECTOR3D_H_
</code></pre>
<pre><code class="language-cpp">#ifndef POINT3D_H_
#define POINT3D_H_

#include &quot;vector3d.h&quot;

template&lt;class T&gt; class Point3D {

    private:
        //-(Variablen)----------------------------------------------------------
        T n[3]; // x, y, z

    public:

   ...
};

#include &quot;point3d.cpp&quot; // wegen eines Templatebugs in verschiedenen Compilern.

#endif // POINT3D_H_
</code></pre>
<p>Wie löse ich nun diese Abhängigkeit auf? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Wenn ich die #define weglasse wird der Compiler doch in einer Endlosschleife stecken bleiben!? <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="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124083/zirkulare-abhängikeit-bei-include</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 20:17:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124083.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 Oct 2005 14:52:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zirkulare Abhängikeit bei #include ?? on Sun, 23 Oct 2005 14:52:37 GMT]]></title><description><![CDATA[<p>Hallo, ich habe mir zwei Klassen geschrieben Vector3D und Point3D. Nun muss sowohl Vector3D auf Inhalte von Point3D als auch anders herum zugreifen. Dabei bekomme ich folgende Fehlermeldung:</p>
<pre><code>In file included from point3d.h:4,
                 from point3d.cpp:5:
vector3d.h:18: error: syntax error before `,' token

In file included from vector3d.h:50,
                 from point3d.h:4,
                 from point3d.cpp:5:

vector3d.cpp:29: error: syntax error before `,' token

vector3d.cpp:29: confused by earlier errors, bailing out

make.exe: *** [point3d.o] Error 1
</code></pre>
<p>Dabei habe ich folgende Headerdateien:</p>
<pre><code class="language-cpp">#ifndef VECTOR3D_H_
#define VECTOR3D_H_

#include &quot;point3d.h&quot;

template&lt;class T&gt; class Vector3D {

    private:
        //-(Variablen)----------------------------------------------------------
        T n[3]; // x, y, z

    public:

        //-(Konstruktoren)------------------------------------------------------
        inline Vector3D(); // Vektor mit (0,0,0)
        inline Vector3D(const T x, const T y, const T z); // Vektor mit (x,y,z)
        inline Vector3D(const Vector3D&lt;T&gt;&amp; v); // Vektor mit (v.x, v.y, v.z)
        inline Vector3D(const Point3D&lt;T&gt; a, const Point3D&lt;T&gt; b); // Erstellt einen Vektor der von a nach b zeigt.

    ...

};

#include &quot;vector3d.cpp&quot; // wegen eines Templatebugs in verschiedenen Compilern.

#endif // VECTOR3D_H_
</code></pre>
<pre><code class="language-cpp">#ifndef POINT3D_H_
#define POINT3D_H_

#include &quot;vector3d.h&quot;

template&lt;class T&gt; class Point3D {

    private:
        //-(Variablen)----------------------------------------------------------
        T n[3]; // x, y, z

    public:

   ...
};

#include &quot;point3d.cpp&quot; // wegen eines Templatebugs in verschiedenen Compilern.

#endif // POINT3D_H_
</code></pre>
<p>Wie löse ich nun diese Abhängigkeit auf? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Wenn ich die #define weglasse wird der Compiler doch in einer Endlosschleife stecken bleiben!? <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="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/899354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899354</guid><dc:creator><![CDATA[Tobain]]></dc:creator><pubDate>Sun, 23 Oct 2005 14:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zirkulare Abhängikeit bei #include ?? on Sun, 23 Oct 2005 15:13:37 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Das Zauberwort in deinem Fall nennt sich Forward-Deklaration. D.h. in vector.h machst du die Klasse Punkt3D bevor der Deklaration von Vector3D bekannt.</p>
<pre><code class="language-cpp">#ifndef VECTOR3D_H_
#define VECTOR3D_H_

// #include &quot;point3d.h&quot; entfällt&quot;

// forward-Deklaration.
template &lt;class T&gt;
class Point3D;

// Hier die Deklaration von Vector3D.
// ...

#endif
</code></pre>
<p>Rest wie gehabt.</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/899360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899360</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Sun, 23 Oct 2005 15:13:37 GMT</pubDate></item><item><title><![CDATA[Reply to Zirkulare Abhängikeit bei #include ?? on Sun, 23 Oct 2005 15:05:17 GMT]]></title><description><![CDATA[<p>brauchst du wirklich beide Klassen in vollem Umfang bei der jeweils anderen? (Sprich: brauchst du außer zu wissen, dass es die Klasse gibt, auch deren methoden?) Sonst reicht eine forward-Deklaration.</p>
<p>Des weiteren würde ich wegen der Ähnlichkeit der beiden Konzepte mal gucken, ob es nicht für ne Gemeinsame Basisklasse reicht.</p>
<p>Schließlich und endlich mal ne Frage: was ist in deinem Verständnis der Unterschied zwischen einem Vektor und einem Punkt im 3D? Es gibt nämlich im Grunde keinen. Damit kannst du dir eines von beidem eigentlich sparen <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/899363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899363</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 23 Oct 2005 15:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zirkulare Abhängikeit bei #include ?? on Sun, 23 Oct 2005 15:40:01 GMT]]></title><description><![CDATA[<p>Danke, das trifft es mal wieder voll auf den Kopf. <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="🙂"
    /> <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>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a> Da hast du recht aber dies ist Absicht damit man beim Rechnen damit nicht so viele Fehler macht und z.T. welche der Compiler erkennt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/899398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/899398</guid><dc:creator><![CDATA[Tobain]]></dc:creator><pubDate>Sun, 23 Oct 2005 15:40:01 GMT</pubDate></item></channel></rss>