<?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[Templates, using namespace, .cpp, .h]]></title><description><![CDATA[<p>Aus Unwissenheit hatte ich damals die Impelementierung meiner Klassentemplates (oder waren es Template-Klassen?) jeweils in die .cpp geschrieben und dann explizite Template-Instanzierung (also z.B. &quot;template class BCH&lt;int&gt;;&quot;) benutzt. Ich wollte jetzt den Inhalt der .cpp in die .h verschieben. Allerdings benutze ich in der .cpp auch &quot;using namespace std;&quot; und weitere. Wenn ich also einfach den Inhalt verschiebe, landet das &quot;using namespace&quot; nun auch in der Header-Datei, was man ja vermeiden sollte. Muss ich nun wohl oder übel das &quot;using namespace&quot; jeweils an den Anfang jeder Methode schreiben oder gibt es da elegantere Möglichkeiten?</p>
<p>Und nochmal zum Verständnis: Die .cpp bleibt bei einem Klassentemplate quasi leer oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312416/templates-using-namespace-cpp-h</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 20:35:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312416.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Jan 2013 11:07:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates, using namespace, .cpp, .h on Fri, 04 Jan 2013 11:07:21 GMT]]></title><description><![CDATA[<p>Aus Unwissenheit hatte ich damals die Impelementierung meiner Klassentemplates (oder waren es Template-Klassen?) jeweils in die .cpp geschrieben und dann explizite Template-Instanzierung (also z.B. &quot;template class BCH&lt;int&gt;;&quot;) benutzt. Ich wollte jetzt den Inhalt der .cpp in die .h verschieben. Allerdings benutze ich in der .cpp auch &quot;using namespace std;&quot; und weitere. Wenn ich also einfach den Inhalt verschiebe, landet das &quot;using namespace&quot; nun auch in der Header-Datei, was man ja vermeiden sollte. Muss ich nun wohl oder übel das &quot;using namespace&quot; jeweils an den Anfang jeder Methode schreiben oder gibt es da elegantere Möglichkeiten?</p>
<p>Und nochmal zum Verständnis: Die .cpp bleibt bei einem Klassentemplate quasi leer oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286092</guid><dc:creator><![CDATA[Ramanujan]]></dc:creator><pubDate>Fri, 04 Jan 2013 11:07:21 GMT</pubDate></item><item><title><![CDATA[Reply to Templates, using namespace, .cpp, .h on Fri, 04 Jan 2013 11:19:02 GMT]]></title><description><![CDATA[<p>using direktiven gehören nicht in header dateien!<br />
Ende.</p>
<p>sonst hebelst du das gesamte namespace system aus.<br />
zur not musst du deine klassen/methoden anpassen</p>
<p>templates müssen zur compilerzeit komplett bekannt sein. deswegen ist die trennung auf header und quelldateien nicht möglich.</p>
<p>Abhilfe schafft aber &quot;extern&quot; (oder wars export?) aus dem neuen Standard(?!)<br />
da kannst mal nach googlen wenn du es brauchst.</p>
<p>was auch geht ist: du schreibst deine Dekalrationen in deinen header, deine Definitionen in eine *.impl und inkludierst diese *.impl datei nach deinen Deklarationen in die Header-Datei</p>
<p>also so:</p>
<pre><code>// Foo.h
template&lt;class T&gt;
void func(T const&amp; x);

#include &quot;Foo.impl&quot;
</code></pre>
<pre><code>// Foo.impl

template&lt;class T&gt;
void func(T const&amp; x)
{
    x.foo();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2286102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286102</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 04 Jan 2013 11:19:02 GMT</pubDate></item><item><title><![CDATA[Reply to Templates, using namespace, .cpp, .h on Fri, 04 Jan 2013 11:24:53 GMT]]></title><description><![CDATA[<p>Ramanujan schrieb:</p>
<blockquote>
<p>Muss ich nun wohl oder übel das &quot;using namespace&quot; jeweils an den Anfang jeder Methode schreiben oder gibt es da elegantere Möglichkeiten?</p>
</blockquote>
<p>Wenn das keine Monsterfunktionen sind, ist es möglicherweise kürzer, einfach qualifizierte Bezeichner zu verwenden. Bei längeren Namen bieten sich ggf. auch Namespacealiase an.</p>
<p>Ramanujan schrieb:</p>
<blockquote>
<p>Und nochmal zum Verständnis: Die .cpp bleibt bei einem Klassentemplate quasi leer oder?</p>
</blockquote>
<p>Wenn sonst nichts zu definieren ist, ja - d.h. im Prinzip kannst du auf diese .cpp-Datai auch verzichten, weil sowieso kein Objektcode erzeugt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286109</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 04 Jan 2013 11:24:53 GMT</pubDate></item><item><title><![CDATA[Reply to Templates, using namespace, .cpp, .h on Fri, 04 Jan 2013 14:35:35 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Abhilfe schafft aber &quot;extern&quot; (oder wars export?) aus dem neuen Standard(?!)</p>
</blockquote>
<p>Du meinst aus dem <strong>alten</strong> Standard. Im Neuen gibt es das nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286206</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 04 Jan 2013 14:35:35 GMT</pubDate></item><item><title><![CDATA[Reply to Templates, using namespace, .cpp, .h on Fri, 04 Jan 2013 17:21:31 GMT]]></title><description><![CDATA[<p>echt jetzt?</p>
<p>ich kann mich erinnern gelesen zu haben, dass es schwere Complicationen damit gibt und es deswegen kaum unterstützt wird...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286260</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 04 Jan 2013 17:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to Templates, using namespace, .cpp, .h on Fri, 04 Jan 2013 18:25:37 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>echt jetzt?</p>
<p>ich kann mich erinnern gelesen zu haben, dass es schwere Complicationen damit gibt und es deswegen kaum unterstützt wird...</p>
</blockquote>
<p>Ja, deswegen wurde es ja aus dem aktuellen Standard entfernt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286300</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 04 Jan 2013 18:25:37 GMT</pubDate></item></channel></rss>