<?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[Syntaxproblem bei Doppelter Classverschachtelung]]></title><description><![CDATA[<p>Morgen,</p>
<p>leider hab ich grad ein Problem bei der korrekten Syntaxierung <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="😃"
    /> von folgendem Problem</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class List
{
   class List_Iterator
   {
      List_Iterator();
   };
List_Iterator begin()const;
};

// Wie komm ich nun an List_Iterator() ran?
// Wenn ich es so mache:
template&lt;class T&gt;
List&lt;T&gt;::List_Iterator List_Iterator()
//...
//krieg ich nen Fehler, von wegen das esin Constructor erwartet wird.Aber genau das selbe probleme habe ich auch bei begin()
//bei der Schreibung
template&lt;class T&gt;
List&lt;T&gt;List_Iterator List&lt;T&gt;::begin()const
//gibts den selben Fehler. Es ist doch richtig das zuerst der Rückgabetyp kommt
//und dann der Zugriff auf den Member
</code></pre>
<p>Eventuell kann mir mal einer kurz auf die Srpünge helfen <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/topic/231458/syntaxproblem-bei-doppelter-classverschachtelung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 21:48:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231458.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 Jan 2009 10:24:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 10:24:15 GMT]]></title><description><![CDATA[<p>Morgen,</p>
<p>leider hab ich grad ein Problem bei der korrekten Syntaxierung <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="😃"
    /> von folgendem Problem</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class List
{
   class List_Iterator
   {
      List_Iterator();
   };
List_Iterator begin()const;
};

// Wie komm ich nun an List_Iterator() ran?
// Wenn ich es so mache:
template&lt;class T&gt;
List&lt;T&gt;::List_Iterator List_Iterator()
//...
//krieg ich nen Fehler, von wegen das esin Constructor erwartet wird.Aber genau das selbe probleme habe ich auch bei begin()
//bei der Schreibung
template&lt;class T&gt;
List&lt;T&gt;List_Iterator List&lt;T&gt;::begin()const
//gibts den selben Fehler. Es ist doch richtig das zuerst der Rückgabetyp kommt
//und dann der Zugriff auf den Member
</code></pre>
<p>Eventuell kann mir mal einer kurz auf die Srpünge helfen <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/1643250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643250</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 10:24:15 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 10:29:26 GMT]]></title><description><![CDATA[<p>klappts denn, wenn du die funktionen innerhalb der klasse definierst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643253</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 11 Jan 2009 10:29:26 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 10:30:17 GMT]]></title><description><![CDATA[<p>Jop das klappt wunderbar. Achja,ich habs auch in der .h ordentlich definiert, also ein Linkerproblem isses schonmal nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643254</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 10:30:17 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 10:42:18 GMT]]></title><description><![CDATA[<p>Also, wenn du Templates benutzen willst, muss alles in Einem sein. Sprich die Deklaration darf nicht getrennt werden, ansonsten erhälst du entsprechende Fehler. Also alles gemeinsam implementieren.</p>
<p>Gruß Gate</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643263</guid><dc:creator><![CDATA[Gate]]></dc:creator><pubDate>Sun, 11 Jan 2009 10:42:18 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 10:47:22 GMT]]></title><description><![CDATA[<p>Gate schrieb:</p>
<blockquote>
<p>Also, wenn du Templates benutzen willst, muss alles in Einem sein. Sprich die Deklaration darf nicht getrennt werden, ansonsten erhälst du entsprechende Fehler. Also alles gemeinsam implementieren.</p>
<p>Gruß Gate</p>
</blockquote>
<p>Alles gemeinsam? Ich habe doch wie gesagt alles in einer Header Datei, jede Deklaration und Defintion steht da drinne, nur bei der jetzt gibts Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643266</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 10:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 10:55:56 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Gate schrieb:</p>
<blockquote>
<p>Also, wenn du Templates benutzen willst, muss alles in Einem sein. Sprich die Deklaration darf nicht getrennt werden, ansonsten erhälst du entsprechende Fehler. Also alles gemeinsam implementieren.</p>
<p>Gruß Gate</p>
</blockquote>
<p>Alles gemeinsam? Ich habe doch wie gesagt alles in einer Header Datei, jede Deklaration und Defintion steht da drinne, nur bei der jetzt gibts Probleme.</p>
</blockquote>
<p>Na, so wie es in deinem Code aussieht, ist in der Klasse nur die Deklaration und weiter unten ausserhalb der Klasse die Definition. So weit ich weiß, muss diese Definition mit in die Klassendeklaration. Wie gesagt, sofern ich das jetzt richtig Überblicke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643273</guid><dc:creator><![CDATA[Gate]]></dc:creator><pubDate>Sun, 11 Jan 2009 10:55:56 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 11:16:02 GMT]]></title><description><![CDATA[<p>Gate schrieb:</p>
<blockquote>
<p>Firefighter schrieb:</p>
<blockquote>
<p>Gate schrieb:</p>
<blockquote>
<p>Also, wenn du Templates benutzen willst, muss alles in Einem sein. Sprich die Deklaration darf nicht getrennt werden, ansonsten erhälst du entsprechende Fehler. Also alles gemeinsam implementieren.</p>
<p>Gruß Gate</p>
</blockquote>
<p>Alles gemeinsam? Ich habe doch wie gesagt alles in einer Header Datei, jede Deklaration und Defintion steht da drinne, nur bei der jetzt gibts Probleme.</p>
</blockquote>
<p>Na, so wie es in deinem Code aussieht, ist in der Klasse nur die Deklaration und weiter unten ausserhalb der Klasse die Definition. So weit ich weiß, muss diese Definition mit in die Klassendeklaration. Wie gesagt, sofern ich das jetzt richtig Überblicke.</p>
</blockquote>
<p>Nein, eher nicht, soweit ich weiß und es auch schon öfter gesehen habe, kann man Deklaration von Definition bei Templates trennen <strong>solange</strong> Die Definition in irgend einer Art und Weiße mit in der selben Datei liegt wie die Deklaration</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643281</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 11:16:02 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 11:40:20 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Nein, eher nicht, soweit ich weiß und es auch schon öfter gesehen habe, kann man Deklaration von Definition bei Templates trennen <strong>solange</strong> Die Definition in irgend einer Art und Weiße mit in der selben Datei liegt wie die Deklaration</p>
</blockquote>
<p>Okay, hab nochmal nachgeguckt und du hast recht, es reicht wenn es in der selben Datei ist. Was ist denn die genaue Meldung des Compilers?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643292</guid><dc:creator><![CDATA[Gate]]></dc:creator><pubDate>Sun, 11 Jan 2009 11:40:20 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 11:42:52 GMT]]></title><description><![CDATA[<p>Ah verdammt, man kann als nicht registrierte nicht editieren, sorry also für den Doppelpost. ALso wenn dein Code so vollständig ist, wie du ihn gepostest hast, dann fehlt doch einfach nur die Implementierung der genannten Methoden. Oder ist es genau Das, was du gerade versuchst und den Compilerfehler bekommst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643294</guid><dc:creator><![CDATA[Gate]]></dc:creator><pubDate>Sun, 11 Jan 2009 11:42:52 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 11:43:35 GMT]]></title><description><![CDATA[<p>Also im moment sieht die Definition so aus</p>
<pre><code class="language-cpp">template&lt;class T&gt;
List&lt;T&gt;::List_Iterator List&lt;T&gt;::begin()const
{
    //Code
}
</code></pre>
<p>Die frage ist ob es so richtig ist? Auf jedenfall gibt er mir folgenden Fehler aus:</p>
<blockquote>
<p>150|error: expected constructor, destructor, or type conversion before &quot;List&quot;</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1643295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643295</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 11:43:35 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 12:44:22 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Also im moment sieht die Definition so aus</p>
<pre><code class="language-cpp">template&lt;class T&gt;
List&lt;T&gt;::List_Iterator List&lt;T&gt;::begin()const
{
    //Code
}
</code></pre>
<p>Die frage ist ob es so richtig ist? Auf jedenfall gibt er mir folgenden Fehler aus:</p>
<blockquote>
<p>150|error: expected constructor, destructor, or type conversion before &quot;List&quot;</p>
</blockquote>
</blockquote>
<p>Hmm, du könntest es mal so versuchen:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
List_Iterator List&lt;T&gt;::begin()const
{
    //Code
}
</code></pre>
<p>Könnte klappen, da du dich ja bereits im scope der Klasse befindest, daher ist der Qualifizierer davor nicht nötig. Aber eigentlich wäre sowas kein Grund für einen Fehler, aber probieren kannst du es ja mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643317</guid><dc:creator><![CDATA[Gate]]></dc:creator><pubDate>Sun, 11 Jan 2009 12:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 12:50:00 GMT]]></title><description><![CDATA[<p>Ja das hatte ich ebend auch gedacht, und probiert hab ich es auch. Leider kommt der selbe Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643320</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 12:50:00 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 13:07:15 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Ja das hatte ich ebend auch gedacht, und probiert hab ich es auch. Leider kommt der selbe Fehler.</p>
</blockquote>
<p>Aber den Konstruktor von List_Iterator hast du doch auch implementiert und nicht nur deklariert oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643336</guid><dc:creator><![CDATA[Gate]]></dc:creator><pubDate>Sun, 11 Jan 2009 13:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 13:08:16 GMT]]></title><description><![CDATA[<p>Der ist definiert, aber der ist wieder innerhalb der Klasse definiert, weil es ja ebend nicht ging :(Meist du daran könnte es liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643338</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 13:08:16 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 15:38:12 GMT]]></title><description><![CDATA[<p>So, habs jetzt einfach mal selbst ausprobiert und so läuft das bei mir wunderbar durch:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class List
{
   class List_Iterator
   {
      List_Iterator()
      {

      }
   };
List_Iterator begin()const
{
    return List_Iterator();
}
};
</code></pre>
<p>Ich sehe auch keinen Grund warum du die Definition außerhalb der Klasse machen musst, daher würd ichs einfach so machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643416</guid><dc:creator><![CDATA[Gate]]></dc:creator><pubDate>Sun, 11 Jan 2009 15:38:12 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 15:39:59 GMT]]></title><description><![CDATA[<p>Naklar, da hast du Recht.Aber ich und viele andere machen es auch gerne das sie Deklaration von Implementation trennen. Weil es ich bin der Meinung das es auch auf meine Art irgendwie gehen <strong>muss</strong>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643417</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 15:39:59 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 15:55:41 GMT]]></title><description><![CDATA[<p>Firefighter schrieb:</p>
<blockquote>
<p>Naklar, da hast du Recht.Aber ich und viele andere machen es auch gerne das sie Deklaration von Implementation trennen. Weil es ich bin der Meinung das es auch auf meine Art irgendwie gehen <strong>muss</strong>.</p>
</blockquote>
<p>Naklar, das ist soweit ja auch richtig und gut, nur gerade bei solchen Template Konstrukten würde ich, wenn es denn dann mal geht, davon abraten. Ich mein, guck dir mal die Boost Sachen, dort haben sie auch bei den meisten Dingen ihre Deklaration und Implementation zusammen gelassen, was natürlich auch daran liegt, dass Boost möglichst Header-only sein soll. Also, ich würd sagen, gerade da du bei Templates eh nur in einer Datei bleiben kannst, bringt die Trennung von Deklaration und Implementation nicht viel. Aber vllt. findest du ja noch ne Möglichkeit, wie du es noch anders hinbekommst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643431</guid><dc:creator><![CDATA[Gate]]></dc:creator><pubDate>Sun, 11 Jan 2009 15:55:41 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 16:04:19 GMT]]></title><description><![CDATA[<p>Schreib mal ein <code>typename</code> vor <code>List&lt;T&gt;::List_Iterator</code> .</p>
<p>Die Trennung kannst du auch gut bei Templates aufrechterhalten, beispielsweise indem du Deklaration und Implementierung in zwei Headerdateien auftrennst und die Deklarationsdatei am Ende ein Include hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643438</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 11 Jan 2009 16:04:19 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 16:15:13 GMT]]></title><description><![CDATA[<p>Nexus, das typename hats gebracht. Kannst du kurz erklären warum das die Lösung war? Also was genau beim Compiler im Kopf jetzt vorgeht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643447</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 16:15:13 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 16:17:12 GMT]]></title><description><![CDATA[<p>Bei Typen, die von Templateparametern abhängig sind, weiss der Compiler nicht, dass es sich um einen Typ handelt. Es könnte ja auch ein Member sein. Mit <code>typename</code> machst du ihm klar, dass es ein Typ ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643449</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 11 Jan 2009 16:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 16:29:12 GMT]]></title><description><![CDATA[<p>Alles klar, ich danke dir, ich wusste doch das es geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643456</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 16:29:12 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 16:42:22 GMT]]></title><description><![CDATA[<p>Mal noch ne andere Frage, wie kann ich mir merken, wann ich typename nutzen muss. Also gibt es dafür eine Konvention wann und wo das anwenden muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643463</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sun, 11 Jan 2009 16:42:22 GMT</pubDate></item><item><title><![CDATA[Reply to Syntaxproblem bei Doppelter Classverschachtelung on Sun, 11 Jan 2009 16:58:15 GMT]]></title><description><![CDATA[<p>Schau dir mal 14.6 im Standard an. Da steht es genau, wann du es angeben musst.</p>
<p>Ansonsten gibst du es grundsätzlich an, um dem Compiler zu sagen, dass eine qualifizierung ein Typ ist und nichts anderes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1643471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1643471</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 11 Jan 2009 16:58:15 GMT</pubDate></item></channel></rss>