<?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)Abhängigkeiten bei Templateklassen.]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich weiß nicht wie ich folgende Abhängigkeiten am besten Auflösen soll.</p>
<p>Klasse A hat eine Templatemethode, diese Templatemethode wrappt eine Templatemethode von Klasse B.</p>
<p>Klasse B hat eine Templatemethode und wrappt eine Templatemethode von Klasse A.</p>
<p>Jetzt fragt bitte nicht warum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> .</p>
<p>Das Problem ist, dass ich das mit Vorwärtsdeklarationen nicht aufgelöst bekomme. Zwischen Schnittstelle und Implementation kann ich ja auch nicht trennen, da es sich um zwei Templatemethoden handelt. Ich erhalte immer diese Meldung:</p>
<blockquote>
<p>**<br />
B error: incomplete type `A' used in nested name specifier<br />
**</p>
</blockquote>
<p>Gibt's da noch eine andere Lösung oder muss ich zwangsläufig das Design umstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150238/include-abhängigkeiten-bei-templateklassen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 13:44:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150238.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Jun 2006 12:41:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to (Include)Abhängigkeiten bei Templateklassen. on Wed, 14 Jun 2006 12:41:32 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich weiß nicht wie ich folgende Abhängigkeiten am besten Auflösen soll.</p>
<p>Klasse A hat eine Templatemethode, diese Templatemethode wrappt eine Templatemethode von Klasse B.</p>
<p>Klasse B hat eine Templatemethode und wrappt eine Templatemethode von Klasse A.</p>
<p>Jetzt fragt bitte nicht warum <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> .</p>
<p>Das Problem ist, dass ich das mit Vorwärtsdeklarationen nicht aufgelöst bekomme. Zwischen Schnittstelle und Implementation kann ich ja auch nicht trennen, da es sich um zwei Templatemethoden handelt. Ich erhalte immer diese Meldung:</p>
<blockquote>
<p>**<br />
B error: incomplete type `A' used in nested name specifier<br />
**</p>
</blockquote>
<p>Gibt's da noch eine andere Lösung oder muss ich zwangsläufig das Design umstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077573</guid><dc:creator><![CDATA[Delryn]]></dc:creator><pubDate>Wed, 14 Jun 2006 12:41:32 GMT</pubDate></item><item><title><![CDATA[Reply to (Include)Abhängigkeiten bei Templateklassen. on Wed, 14 Jun 2006 13:07:12 GMT]]></title><description><![CDATA[<p>Warum brauchst du das?</p>
<p>So funktioniert es auf jeden Fall bei mir, wenn ich dich richtig verstanden habe:</p>
<pre><code class="language-cpp">struct A
{
   template &lt;typename T&gt;
   void foo();

   template &lt;typename T&gt;
   void bar()
   { std::cout &lt;&lt; &quot;A::bar()\n&quot;; }
};

struct B
{
   template &lt;typename T&gt;
   void foo()
   { std::cout &lt;&lt; &quot;B::foo()\n&quot;; }

   template &lt;typename T&gt;
   void bar()
   {
      A a;
      a.bar&lt;T&gt;(); 
   }
};

// Darauf musst du achten.

template &lt;typename T&gt;
void A::foo()
{
   std::cout &lt;&lt; &quot;A::foo()\n&quot;;
   B b;
   b.foo&lt;T&gt;();
}
</code></pre>
<p>Vielleicht habe ich mich vertippt. Mein Entwicklungspc hat keinen Internetanschluss. Und umgekehrt auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077584</guid><dc:creator><![CDATA[cppfan]]></dc:creator><pubDate>Wed, 14 Jun 2006 13:07:12 GMT</pubDate></item><item><title><![CDATA[Reply to (Include)Abhängigkeiten bei Templateklassen. on Wed, 14 Jun 2006 13:11:31 GMT]]></title><description><![CDATA[<p>Delryn schrieb:</p>
<blockquote>
<p>Zwischen Schnittstelle und Implementation kann ich ja auch nicht trennen, da es sich um zwei Templatemethoden handelt. Ich erhalte immer diese Meldung:</p>
<blockquote>
<p>**<br />
B error: incomplete type `A' used in nested name specifier<br />
**</p>
</blockquote>
</blockquote>
<p>eine trennung zwischen deklaration und implementation der funktionen des klassentemplates kann sehr wohl erfolgen (und der fehler tritt ja wahrscheinlich erst bei letzterem ein). dies kann z.b. dadurch erreicht werden, dass die implementation in eine eigene datei ausglagert wird und dann erst am ende des headers, der das klassentemplate enthält, eingebunden wird (jedenfalls nachdem der header, der das zweite template enthält inkludiert wurde).<br />
etwa:<br />
A.h</p>
<pre><code class="language-cpp">#ifndef A_H_INCLUDED
#define A_H_INCLUDED
template&lt;typename foo&gt; class B; // deklaration falls gebraucht
template&lt;typename foo&gt; class A
{
//..
};
#include &quot;B.h&quot;
#include &quot;A.inl&quot;
#endif
</code></pre>
<p>B.h</p>
<pre><code class="language-cpp">#ifndef B_H_INCLUDED
#define B_H_INCLUDED
template&lt;typename foo&gt; class A;
template&lt;typename foo&gt; class B
{
//..
};
#include &quot;A.h&quot;
#include &quot;B.inl&quot;
#endif
</code></pre>
<p>A.inl</p>
<pre><code class="language-cpp">// hier die definitionen der funktionen des templates A
</code></pre>
<p>B.inl</p>
<pre><code class="language-cpp">// hier die definitionen der funktionen des templates B
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1077587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077587</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 14 Jun 2006 13:11:31 GMT</pubDate></item></channel></rss>