<?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[Definitionen in Namespaces?]]></title><description><![CDATA[<p>Hallo,</p>
<p>also ich habe gelernt, dass (Variablen) Definitionen in Headern böse sind, also man niemals sowas machen sollte:<br />
// foo.h<br />
int var;</p>
<p>stattdessen besser:<br />
// foo.h<br />
extern int var;</p>
<p>// foo.cpp<br />
int var;</p>
<p>Aber wie ist das nun mit Namespaces?</p>
<p>wenn ich nun habe:<br />
<a href="//bar.h">//bar.h</a><br />
namespace test {<br />
int var;<br />
}<br />
habe ich dann nicht das selbe Problem wie in foo.h mit var? Sind solche Definitionen in Namespaces schlecht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228482/definitionen-in-namespaces</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 14:54:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228482.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 Nov 2008 19:34:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Definitionen in Namespaces? on Fri, 28 Nov 2008 19:34:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>also ich habe gelernt, dass (Variablen) Definitionen in Headern böse sind, also man niemals sowas machen sollte:<br />
// foo.h<br />
int var;</p>
<p>stattdessen besser:<br />
// foo.h<br />
extern int var;</p>
<p>// foo.cpp<br />
int var;</p>
<p>Aber wie ist das nun mit Namespaces?</p>
<p>wenn ich nun habe:<br />
<a href="//bar.h">//bar.h</a><br />
namespace test {<br />
int var;<br />
}<br />
habe ich dann nicht das selbe Problem wie in foo.h mit var? Sind solche Definitionen in Namespaces schlecht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622619</guid><dc:creator><![CDATA[namefrage]]></dc:creator><pubDate>Fri, 28 Nov 2008 19:34:03 GMT</pubDate></item><item><title><![CDATA[Reply to Definitionen in Namespaces? on Fri, 28 Nov 2008 19:43:03 GMT]]></title><description><![CDATA[<p>Ein namespace beseitigt zwar das Problem der Namenskonflikte, das eigentliche Problem von globalen Variablen (können von überall, zu jeder Zeit, unüberwacht verändert werden) wird nicht beseitigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622624</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Fri, 28 Nov 2008 19:43:03 GMT</pubDate></item><item><title><![CDATA[Reply to Definitionen in Namespaces? on Fri, 28 Nov 2008 19:45:57 GMT]]></title><description><![CDATA[<p>Meine Frage bezog sich eher auf den Linker Fehler. Wenn ich foo.h in 2 Übersetzungseinheiten inkludiere, gibts ja einen Linkerfehler. Hat man das selbe Problem mit Variablen Definitionen in Namespaces?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622625</guid><dc:creator><![CDATA[namefrage]]></dc:creator><pubDate>Fri, 28 Nov 2008 19:45:57 GMT</pubDate></item><item><title><![CDATA[Reply to Definitionen in Namespaces? on Fri, 28 Nov 2008 19:52:17 GMT]]></title><description><![CDATA[<p>In Headerdateien deklariert man Variablen al extern oder static, je nach Verwendungszweck. Allerdings gibt es zumindest in C++ kaum wirkliche Einsatzbereiche für globale Variablen, deshalb sollte man sie - wie gesagt - aufgrund ihrer Schwächen einfach vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622627</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Fri, 28 Nov 2008 19:52:17 GMT</pubDate></item><item><title><![CDATA[Reply to Definitionen in Namespaces? on Fri, 28 Nov 2008 20:15:40 GMT]]></title><description><![CDATA[<p>namefrage schrieb:</p>
<blockquote>
<p>Meine Frage bezog sich eher auf den Linker Fehler. Wenn ich foo.h in 2 Übersetzungseinheiten inkludiere, gibts ja einen Linkerfehler. Hat man das selbe Problem mit Variablen Definitionen in Namespaces?</p>
</blockquote>
<p>Natürlich hast du dasselbe Problem mit Variablen in (benannten) Namespaces genauso. In unbenannten/anonymen Namespaces hast du das Problem nicht, dafür hast du dann viele verschiedene Variablen (eine Kopie pro Übersetzungseinheit).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622635</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 28 Nov 2008 20:15:40 GMT</pubDate></item><item><title><![CDATA[Reply to Definitionen in Namespaces? on Fri, 28 Nov 2008 20:24:11 GMT]]></title><description><![CDATA[<p>Hm, wieso wird dann in bis jetzt jedem von mir gefundenen Namespace &quot;Tutorial&quot; eine Variable im Namespace angelegt?</p>
<p>z.B. auch hier: <a href="http://tutorial.schornboeck.net/namespace.htm" rel="nofollow">http://tutorial.schornboeck.net/namespace.htm</a></p>
<p>Das ist doch dann eigentlich richtig mieser Code?<br />
Wie macht man es dann richtig, wenn man eine globale Variable in einem Namespace braucht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622638</guid><dc:creator><![CDATA[namefrage]]></dc:creator><pubDate>Fri, 28 Nov 2008 20:24:11 GMT</pubDate></item><item><title><![CDATA[Reply to Definitionen in Namespaces? on Fri, 28 Nov 2008 20:42:01 GMT]]></title><description><![CDATA[<p>In dem Tutorial steht der Code in der .cpp Datei.<br />
Das Problem ist, dass bei #include die Definition immer textuell in jede inkludierende Datei kopiert wird. Ab 2 Dateien beschwert sich dann der Linker, weil du sie doppelt hast. In der .cpp beschwert er sich nicht, weil du sie natürlich nur einmal hast.</p>
<blockquote>
<p>Wie macht man es dann richtig, wenn man eine globale Variable in einem Namespace braucht?</p>
</blockquote>
<p>Gar nicht. Wenn du eine globale Variable brauchst, machst du es nicht richtig.<br />
Aber wenn du nur meinst, dass der Compiler sich nicht beschwert, das mit extern tuts auch im namespace.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622643</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Fri, 28 Nov 2008 20:42:01 GMT</pubDate></item><item><title><![CDATA[Reply to Definitionen in Namespaces? on Fri, 28 Nov 2008 21:14:13 GMT]]></title><description><![CDATA[<p>namefrage schrieb:</p>
<blockquote>
<p>Wie macht man es dann richtig, wenn man eine globale Variable in einem Namespace braucht?</p>
</blockquote>
<p>Nenn mir mal bitte einen praktischen Anwendungsfall, in dem du meinst das du eine globale Variable brauchen würdest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1622649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1622649</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 28 Nov 2008 21:14:13 GMT</pubDate></item></channel></rss>