<?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[klasse nicht geklariert, obwohl sie es sein müsste?!]]></title><description><![CDATA[<p>Hallo,<br />
ich hab das Problem, dass mir der Compiler sagt eine Klasse sei nicht definiert obwohl ich sie includiere. ich habs mal auf ein kleines Beispiel runtergebrochen<br />
mat.h</p>
<pre><code class="language-cpp">#ifndef __mat_h__
#define __mat_h__

template&lt;class t&gt;
class mat
{
	public:
		t _data;
		void change(t const &amp;data);

};

#include &quot;lgs.h&quot;

#include &quot;mat.cpp&quot;

#endif
</code></pre>
<p>mat.cpp</p>
<pre><code class="language-cpp">#ifndef __mat_cpp__
#define __mat_cpp__

#include &quot;mat.h&quot;

template&lt;class t&gt;
void mat&lt;t&gt;::change(t const &amp;data)
{
	lgs::change(*this, data);
}

#endif
</code></pre>
<p>lgs.h</p>
<pre><code class="language-cpp">#ifndef __lgs_h__
#define __lgs_h__

#include &quot;mat.h&quot;

class lgs
{
	public:
		template&lt;class t&gt;
		static void change(mat&lt;t&gt; &amp;m, t const &amp;data);

};

#include &quot;lgs.cpp&quot;

#endif
</code></pre>
<p>lgs.cpp</p>
<pre><code class="language-cpp">#ifndef __lgs_cpp__
#define __lgs_cpp__

#include &quot;lgs.h&quot;

template&lt;class t&gt;
void lgs::change(mat&lt;t&gt; &amp;m, t const &amp;data)
{
	m._data = data;
}

#endif
</code></pre>
<p>Der Aufbau der Klassen macht in diesem Beispiel nicht unbedingt viel Sinn, aber soll auch nur zur Problemkonstruktion dienen.<br />
Ich benutze Code::Blocks 10.05 mit dem GNU GCC und dieser gibt mir folgende Fehlermeldung, die ich nicht ganz nachvollziehen kann:</p>
<pre><code>mat.cpp: In member function 'void mat&lt;t&gt;::change(const t&amp;)':
mat.cpp:10: error: 'lgs' has not been declared
</code></pre>
<p>Danke schonmal im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/281056/klasse-nicht-geklariert-obwohl-sie-es-sein-müsste</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 20:48:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281056.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Jan 2011 09:23:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:36:39 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich hab das Problem, dass mir der Compiler sagt eine Klasse sei nicht definiert obwohl ich sie includiere. ich habs mal auf ein kleines Beispiel runtergebrochen<br />
mat.h</p>
<pre><code class="language-cpp">#ifndef __mat_h__
#define __mat_h__

template&lt;class t&gt;
class mat
{
	public:
		t _data;
		void change(t const &amp;data);

};

#include &quot;lgs.h&quot;

#include &quot;mat.cpp&quot;

#endif
</code></pre>
<p>mat.cpp</p>
<pre><code class="language-cpp">#ifndef __mat_cpp__
#define __mat_cpp__

#include &quot;mat.h&quot;

template&lt;class t&gt;
void mat&lt;t&gt;::change(t const &amp;data)
{
	lgs::change(*this, data);
}

#endif
</code></pre>
<p>lgs.h</p>
<pre><code class="language-cpp">#ifndef __lgs_h__
#define __lgs_h__

#include &quot;mat.h&quot;

class lgs
{
	public:
		template&lt;class t&gt;
		static void change(mat&lt;t&gt; &amp;m, t const &amp;data);

};

#include &quot;lgs.cpp&quot;

#endif
</code></pre>
<p>lgs.cpp</p>
<pre><code class="language-cpp">#ifndef __lgs_cpp__
#define __lgs_cpp__

#include &quot;lgs.h&quot;

template&lt;class t&gt;
void lgs::change(mat&lt;t&gt; &amp;m, t const &amp;data)
{
	m._data = data;
}

#endif
</code></pre>
<p>Der Aufbau der Klassen macht in diesem Beispiel nicht unbedingt viel Sinn, aber soll auch nur zur Problemkonstruktion dienen.<br />
Ich benutze Code::Blocks 10.05 mit dem GNU GCC und dieser gibt mir folgende Fehlermeldung, die ich nicht ganz nachvollziehen kann:</p>
<pre><code>mat.cpp: In member function 'void mat&lt;t&gt;::change(const t&amp;)':
mat.cpp:10: error: 'lgs' has not been declared
</code></pre>
<p>Danke schonmal im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012328</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:36:39 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:28:52 GMT]]></title><description><![CDATA[<p>Liegt an deinen extrem zirkulären #includes und den Include Guards, denk dir mal durch was da passiert. Include Guards sind <em>kein</em> Freibrief um einfach abschalten und alles überall inkludieren zu können. Warum includest du eigentlich .cpp Dateien, das ist ganz böse!? Und zu deiner Info sei erwähnt dass Identifier die mit __ beginnen reserviert sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012329</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:28:52 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:28:17 GMT]]></title><description><![CDATA[<p>na wenn ich templates habe brauch ich die definitionen der einzelnen funktionen sonst meckert er ja auch rum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012331</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:28:17 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:30:40 GMT]]></title><description><![CDATA[<p>Ja dann musst du dich eben drum kümmern dass die definition verfügbar ist. Wie gesagt liegt das Problem in deinen zirkulären includes, denk mal drüber nach was du da eigentlich tust...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012333</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:30:40 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:35:46 GMT]]></title><description><![CDATA[<p>mir ist das schon klar das ich zirkulär inklude, was allerdings durch IncludeGuards kein Problem sein sollte.<br />
es ist halt so das lgs nur diverse funktionen, die auf mat-objekten arbeiten zur verfügung stellt. für ein paar methoden von mat brauche ich diese funktionen aus lgs und möchte die halt dort nutzen. wie kann ich dass denn dann sinnvoll umsetzen, wenn nicht so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012337</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:35:46 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:39:34 GMT]]></title><description><![CDATA[<p>FreakyBKA schrieb:</p>
<blockquote>
<p>mir ist das schon klar das ich zirkulär inklude, was allerdings durch IncludeGuards kein Problem sein sollte.</p>
</blockquote>
<p>Genau da liegt dein Trugschluss. Es ist eben doch ein Problem...</p>
<p>Wie gesagt:</p>
<p>dot schrieb:</p>
<blockquote>
<p>Include Guards sind <em>kein</em> Freibrief um einfach abschalten und alles überall inkludieren zu können...</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2012340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012340</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:39:34 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:40:14 GMT]]></title><description><![CDATA[<p>Bei Klassentemplates ist es durchaus eine Möglichkeit, die Definitionen der Memberfunktionstemplates in eine .cpp zu packen, und die in der .h (aber dann auch nur da) zu includieren.<br />
Das wird auch hier beschrieben: <a href="http://www.amazon.com/Templates-Complete-Guide-David-Vandevoorde/dp/0201734842" rel="nofollow">http://www.amazon.com/Templates-Complete-Guide-David-Vandevoorde/dp/0201734842</a><br />
Allerdings hat es dich (schon allein der Übersichtlichkeit halber) durchgesetzt, dass man die Definitionen einfach mit in die .h schreibt, die cpp nicht includiert und da nur den Kram drin hat, der nicht sichtbar sein muss. Dann passt es auch wieder zum normalen .h-.cpp-Konzept. Das würde ich auch empfehlen.<br />
Warum dein Beispiel hier allerdings nicht kompiliert werden kann, versteh ich nicht. Habs gerade hier mit VC 2005 Express probiert, und da ging es fehlerfrei.<br />
Muss es ja eigentlich auch, denn wenn man manuell das macht, was der Präprozessor in dem Fall mit den includes macht, kommt folgendes bei raus:</p>
<pre><code class="language-cpp">template&lt;class t&gt;
class mat
{
    public:
        t _data;
        void change(t const &amp;data);
};

class lgs
{
    public:
        template&lt;class t&gt;
        static void change(mat&lt;t&gt; &amp;m, t const &amp;data);
};

template&lt;class t&gt;
void lgs::change(mat&lt;t&gt; &amp;m, t const &amp;data)
{
    m._data = data;
}

template&lt;class t&gt;
void mat&lt;t&gt;::change(t const &amp;data)
{
    lgs::change(*this, data);
}
</code></pre>
<p>Kann es sein, dass du in deine Code doch noch irgendwo etwas anders hast als bei dem, was du hier gepostet hast?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012342</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:40:14 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:39:54 GMT]]></title><description><![CDATA[<p>ja und das genaue Problem suche ich halt.<br />
die idee ist halt das ich folgende reihenfolge habe</p>
<p>deklaration mat und lgs<br />
definition mat und lgs</p>
<p>und wenn ich das durchspiele kommt das doch auch überall so hin, oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012343</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:43:03 GMT]]></title><description><![CDATA[<p>Dobi schrieb:</p>
<blockquote>
<p>Kann es sein, dass du in deine Code doch noch irgendwo etwas anders hast als bei dem, was du hier gepostet hast?</p>
</blockquote>
<p>ich hab es genauso wie oben compiliert, mit GNU GCC, und da gibt er besagten fehler. mein eigentlicher code ist komplexer, aber konnte den gleichen fehler halt auch mit dieser vereinfachten variante konstruieren, also muss er auch hier zu finden sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012345</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:48:32 GMT]]></title><description><![CDATA[<p>Überleg mal was Include Guards machen:</p>
<pre><code class="language-cpp">// A.h

#ifndef A_INCLUDED
#define A_INCLUDED

#include &quot;B.h&quot;

class A
{
};

#endif

// B.h

#ifndef B_INCLUDED
#define B_INCLUDED

#include &quot;A.h&quot;

class B
{
  A a;
};

#endif
</code></pre>
<p>Du inkludierst irgendwo A.h. A_INCLUDED wird definiert und dann gleich drauf B.h inkludiert. B.h inkludiert nun wieder A.h. Da A_INCLUDED aber schon definiert ist kommt nix aus A.h mehr rein und der Typ A ist in B.h undefiniert. Die Moral von der Geschicht: Include Guards lösen <em>nicht</em> auf irgendeine magische Art und Weise zirkuläre Abhängigkeiten auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012349</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:49:08 GMT]]></title><description><![CDATA[<p>sehe ich nicht so, denn bei mat.h wir lgs.h nach der deklaration von mat inkludiert, weswegen es eigentlich funktionieren müsste.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012354</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:49:08 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 09:57:52 GMT]]></title><description><![CDATA[<p>Im Beispiel von dot kann man zirkuläre Abhängigkeiten lösen, indem man eine Vorwärtsdeklaration macht.</p>
<p>Aus</p>
<pre><code class="language-cpp">#include &quot;A.h&quot;
</code></pre>
<p>wird</p>
<pre><code class="language-cpp">class A;
</code></pre>
<p>.</p>
<p>Wenn A.h bereits inkludiert ist, dann findet man in B.h nur eine leere Datei (dank Inkludeguards). Somit kann es nicht funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012363</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Wed, 26 Jan 2011 09:57:52 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 10:11:00 GMT]]></title><description><![CDATA[<p>VC hats eben wie gesagt ohne zu meckern übersetzt. Ich konnte mir zwar nicht vorstellen, dass GCC das nicht schafft, habs dann aber trotzdem getestet. Ergebnis: Auch da funktionierts. Siehe hier: <a href="http://i51.tinypic.com/28vatl5.png" rel="nofollow">http://i51.tinypic.com/28vatl5.png</a><br />
Den Fehler, dass er kein main findet, wird man natürlich los wenn man das hier macht:<br />
<a href="http://i51.tinypic.com/2ccqvxg.png" rel="nofollow">http://i51.tinypic.com/2ccqvxg.png</a><br />
Offensichtlich hast du also doch noch irgendwo was anderes falsch. <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="😉"
    /><br />
Aber selbst wenn du es findest, empfehle ich in jedem Fall weiterhin, die Definitionen mit in die .hs zu packen, weil es dann einfach viel übersichtlicher wird. <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/2012365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012365</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Wed, 26 Jan 2011 10:11:00 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 10:06:27 GMT]]></title><description><![CDATA[<p>Das Problem is ja auch nicht dass mat unbekannt ist sondern lgs. Wenn du z.B. mit #include &quot;lgs.h&quot; startest dann wird als erstes gleich mal mat.h inkludiert welches nach der Definition von mat lgs inkludiert, was nun aber übersprungen wird und dazu führt dass in der Definition von mat&lt;t&gt;::change() lgs unbekannt ist.</p>
<p>Abgesehen davon kann man das mit der Trennung von Deklaration und Implementierung schon so machen nur würde ich dazu raten die Dateien dann eben nicht .cpp zu nennen sondern irgendwas anderes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012367</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 26 Jan 2011 10:06:27 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 10:11:28 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6496">@Dot</a>: Schau dir doch nochmal genau an, was er da tut, und was der Präprozessor mit seinem Code dann macht. Seine Vorgehensweise ist nicht falsch (Es funktioniert ja, siehe meine Screenshots) sondern nur unnötig kompliziert. <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="😉"
    /><br />
Dieses Verfahren ist halt ein gescheiterter Versuch, auch bei Templates noch alle Definitionen in eine cpp zu packen.<br />
Wenn da jetzt noch andere Memberfunktionen dabei wären, die nicht templatig sind, müssten die konsequenterweise in eine weitere cpp kommen, die dann nirgendwo includiert wird und wie bei Nichttemplategeschichten auch dann erst von Linker drangeknotet wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012369</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Wed, 26 Jan 2011 10:11:28 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 10:06:02 GMT]]></title><description><![CDATA[<p>ok, das stimmt, bin immer von #include &quot;mat.h&quot; ausgegangen, dann müsste ja eine forward-deklaration von mat in lgs.h punkt abhilfe schaffen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012371</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Wed, 26 Jan 2011 10:06:02 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 10:16:13 GMT]]></title><description><![CDATA[<p>hat funktioniert, danke für die hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012376</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Wed, 26 Jan 2011 10:16:13 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 10:23:06 GMT]]></title><description><![CDATA[<p>Darf ich die Auflösung erfahren, warum der gepostete Code bei mir lief und bei dir nicht? <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/2012381</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012381</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Wed, 26 Jan 2011 10:23:06 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 10:28:14 GMT]]></title><description><![CDATA[<p>Dobi schrieb:</p>
<blockquote>
<p>Darf ich die Auflösung erfahren, warum der gepostete Code bei mir lief und bei dir nicht? <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>Vermutlich weil du mat.h inkludiert hast und nicht lgs.h</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012386</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012386</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 26 Jan 2011 10:28:14 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 11:02:26 GMT]]></title><description><![CDATA[<p>ja denke auch das daran lag, hab die lgs.h jetzt jedenfalls zu</p>
<pre><code class="language-cpp">#ifndef __lgs_h__
#define __lgs_h__

template&lt;class t&gt;
class mat;

class lgs
{
	public:
		template&lt;class t&gt;
		static void change(mat&lt;t&gt; &amp;m, t const &amp;data);

};

#include &quot;mat.h&quot;

#include &quot;lgs.cpp&quot;

#endif
</code></pre>
<p>geändert und es funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012402</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Wed, 26 Jan 2011 11:02:26 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 11:08:47 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>Dobi schrieb:</p>
<blockquote>
<p>Darf ich die Auflösung erfahren, warum der gepostete Code bei mir lief und bei dir nicht? <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>Vermutlich weil du mat.h inkludiert hast und nicht lgs.h</p>
</blockquote>
<p>Ich hatte nix geändert sondern nur den Code, der im Eingangspost stand, in Dateien kopiert, was man auch auf den Screenshots sieht. Naja, mir solls egal sein. <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/2012403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012403</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Wed, 26 Jan 2011 11:08:47 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 11:26:22 GMT]]></title><description><![CDATA[<p>Um den Code zu verwenden musst du ihn ja aber in irgendeine Übersetzungseinheit inkludieren. Oder hast du dich von der Tatsache verwirren lassen dass die beiden Dateien mit den Implementierungen auf .cpp enden? Genau darum halte ich es wie gesagt auch für eine extrem schlechte Idee Dateien auf .cpp zu benennen die gar keine Übersetzungseinheiten sind <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/2012406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012406</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Wed, 26 Jan 2011 11:26:22 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 11:31:09 GMT]]></title><description><![CDATA[<p>Ah, haha, sehr gut. Hast vollkommen Recht. Das wars. Ich hab die mat.cpp direkt kompiliert, was dann natürlich ging. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2012410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012410</guid><dc:creator><![CDATA[Dobi]]></dc:creator><pubDate>Wed, 26 Jan 2011 11:31:09 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 14:48:55 GMT]]></title><description><![CDATA[<p>Dobi schrieb:</p>
<blockquote>
<p>Allerdings hat es sich (schon allein der Übersichtlichkeit halber) durchgesetzt, dass man die Definitionen einfach mit in die .h schreibt, die cpp nicht includiert und da nur den Kram drin hat, der nicht sichtbar sein muss. Dann passt es auch wieder zum normalen .h-.cpp-Konzept. Das würde ich auch empfehlen.</p>
</blockquote>
<p>Was daran übersichtlich sein soll, kann ich jetzt überhaupt nicht nachvollziehen. In ein headerfile sollen die Definitionen und nichts anderes.<br />
Alle eigentlichen Codes ins cpp. Wenn da was keine Templates drin hat, hat man schnell zwei defines angebracht, so dass sich das cpp auch trotz des mit enthaltenen template codes problemlos kompilieren lässt.<br />
So ist dann aber alles schön so zusammen wie es auch bei allen nicht-Template-Klassen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012520</guid><dc:creator><![CDATA[ccpete]]></dc:creator><pubDate>Wed, 26 Jan 2011 14:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 15:00:26 GMT]]></title><description><![CDATA[<p>ccpete schrieb:</p>
<blockquote>
<p>Was daran übersichtlich sein soll, kann ich jetzt überhaupt nicht nachvollziehen. In ein headerfile sollen die Definitionen und nichts anderes.</p>
</blockquote>
<p>Ein Template funktioniert aber nicht nach den &quot;üblichen&quot; Maßstäben, und es ist mit Sicherheit ungewöhnlicher ein include auf eine cpp zu machen, als eine Definition in die Header zu schreiben (und wenn schon, mit einer Endung die auf den Sonderfall hinweist. z.B. tmpl statt cpp).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012526</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 26 Jan 2011 15:00:26 GMT</pubDate></item><item><title><![CDATA[Reply to klasse nicht geklariert, obwohl sie es sein müsste?! on Wed, 26 Jan 2011 15:25:41 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Ein Template funktioniert aber nicht nach den &quot;üblichen&quot; Maßstäben,</p>
</blockquote>
<p>Wohl war, aber es lässt sich so umsetzen, dass es genauso mit einbezogen werden kann wie eine ganz normale Klasse - Und dies macht in meinen Augen mehr Sinn, als etwas wie</p>
<p>asc schrieb:</p>
<blockquote>
<p>(...mit einer Endung die auf den Sonderfall hinweist. z.B. tmpl statt cpp).</p>
</blockquote>
<p>Denn ich sehe hier keinen Mehrnutzen. Oder was nützt es mir, wenn ich die Endung sehe und dann nachschauen muss: &quot;scheisse, was ist denn das für n'ding?&quot;.<br />
Und wenn ich dann noch Teile separat kompilieren muss, zB wegen einer Spezialisierung, dann soll das nochmals in ein separates File usw usw? Ne Danke, da ist doch der gute alte Aufbau einmal .hpp und einmal .cpp viel angenehmer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2012540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2012540</guid><dc:creator><![CDATA[ccpete]]></dc:creator><pubDate>Wed, 26 Jan 2011 15:25:41 GMT</pubDate></item></channel></rss>