<?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[namespace]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab mal 2 Fragen zu namespace:</p>
<p>Ist das Beispiel unten so korrekt, also Deklaration der Funktionen in die Header-Datei und Definition der Funktionen sowie Deklaration und Definition der globalen Variablen im neuen namespace in die CPP-Datei ?</p>
<p>Ich habe ein Projekt mit mehreren Funktionen, wobei einige Variablen auch von mehreren Funktionen gebraucht werden. Um jetzt nicht viele Funktionen im Aufruf mit Zeigern oder Referenzen zu versehen habe ich mich für die Variante mit globalen Variablen innerhalb des namespace entschieden. Gibt es da von eurer Seite was zu beanstanden oder ist das in C++ so ok ? Von außen geschützt sind die Variablen ja durch den namespace. Ich denke auch das es vom Programmablauf schneller ist als wie wenn man die Variablen bei jedem Aufruf als Parameter den Funktionen übergibt, oder ?</p>
<p>*.h Datei</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------

namespace MyNamespace
{
 int Add();
 int Subtract();
 void Setup();
}
//---------------------------------------------------------------------------
#endif
</code></pre>
<p>*.cpp Datei</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
#include &lt;iostream&gt;
#pragma hdrstop

#include &quot;Unit2.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
using namespace std;

namespace MyNamespace
{
 int Result;
 int Op1;
 int Op2;

 void Setup()
 {
  Op1 = 12;
  Op2 = 10;
 }

 Add()
 {
  return( Op1 + Op2 );
 }

 Subtract()
 {
  return( Op1 - Op2 );
 }
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/242413/namespace</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 23:03:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242413.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Jun 2009 13:33:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 13:33:25 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich hab mal 2 Fragen zu namespace:</p>
<p>Ist das Beispiel unten so korrekt, also Deklaration der Funktionen in die Header-Datei und Definition der Funktionen sowie Deklaration und Definition der globalen Variablen im neuen namespace in die CPP-Datei ?</p>
<p>Ich habe ein Projekt mit mehreren Funktionen, wobei einige Variablen auch von mehreren Funktionen gebraucht werden. Um jetzt nicht viele Funktionen im Aufruf mit Zeigern oder Referenzen zu versehen habe ich mich für die Variante mit globalen Variablen innerhalb des namespace entschieden. Gibt es da von eurer Seite was zu beanstanden oder ist das in C++ so ok ? Von außen geschützt sind die Variablen ja durch den namespace. Ich denke auch das es vom Programmablauf schneller ist als wie wenn man die Variablen bei jedem Aufruf als Parameter den Funktionen übergibt, oder ?</p>
<p>*.h Datei</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------

namespace MyNamespace
{
 int Add();
 int Subtract();
 void Setup();
}
//---------------------------------------------------------------------------
#endif
</code></pre>
<p>*.cpp Datei</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
#include &lt;iostream&gt;
#pragma hdrstop

#include &quot;Unit2.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
using namespace std;

namespace MyNamespace
{
 int Result;
 int Op1;
 int Op2;

 void Setup()
 {
  Op1 = 12;
  Op2 = 10;
 }

 Add()
 {
  return( Op1 + Op2 );
 }

 Subtract()
 {
  return( Op1 - Op2 );
 }
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1720407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720407</guid><dc:creator><![CDATA[C++ Learner]]></dc:creator><pubDate>Wed, 03 Jun 2009 13:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 13:38:16 GMT]]></title><description><![CDATA[<p>Deine Funktionen Add und Subtract haben keinen Rückgabewert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720413</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Wed, 03 Jun 2009 13:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 14:02:26 GMT]]></title><description><![CDATA[<p>Ich denke <strong>int</strong> muss nicht zwingend in der Definition von Funktionen als Rückgabewert angegeben werden ? Wenn da nix davor steht ist das doch automatisch int <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720440</guid><dc:creator><![CDATA[C++ Learner]]></dc:creator><pubDate>Wed, 03 Jun 2009 14:02:26 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 14:08:59 GMT]]></title><description><![CDATA[<p>C++ Learner schrieb:</p>
<blockquote>
<p>Ich denke <strong>int</strong> muss nicht zwingend in der Definition von Funktionen als Rückgabewert angegeben werden ? Wenn da nix davor steht ist das doch automatisch int <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Das war mal vor Jahren in C. In C++ muss immer ein Rückgabewert angegeben werden. Mit welchem Buch/Tutorial lernst du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720450</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 03 Jun 2009 14:08:59 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 14:29:24 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>C++ Learner schrieb:</p>
<blockquote>
<p>Ich denke <strong>int</strong> muss nicht zwingend in der Definition von Funktionen als Rückgabewert angegeben werden ? Wenn da nix davor steht ist das doch automatisch int <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Das war mal vor Jahren in C. In C++ muss immer ein Rückgabewert angegeben werden. Mit welchem Buch/Tutorial lernst du?</p>
</blockquote>
<p>Hm, da hab ich mir gar keine Gedanken drüber gemacht weil der Compiler (BDS 2006) überhaupt nicht gemeckert hat (Warnungen 0). Dann werde ich das mal abändern.</p>
<p>Ist denn die Vorgehensweise mit den Variablen so in Ordnung ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720464</guid><dc:creator><![CDATA[C++ Learner]]></dc:creator><pubDate>Wed, 03 Jun 2009 14:29:24 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 14:35:35 GMT]]></title><description><![CDATA[<p>Ich kann mir kaum vorstellen, das so etwas wirklich nützlich ist.</p>
<blockquote>
<p>Ich denke auch das es vom Programmablauf schneller ist als wie wenn man die Variablen bei jedem Aufruf als Parameter den Funktionen übergibt, oder ?</p>
</blockquote>
<p>Das ist aber bestimmt ein falscher Grund auf jegliche Objekte zu verzichten.</p>
<p>Bei deinem Beispiel würde sich eine Klasse eher anbieten. Und bevor ich das direkt in den namespace packen würde, würde ich soagar ein singleton bevorzugen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720469</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 03 Jun 2009 14:35:35 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 14:59:44 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Ich kann mir kaum vorstellen, das so etwas wirklich nützlich ist.</p>
</blockquote>
<p>Ich würde das ja gerne verstehen wollen, aber was meinst du damit genau <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>drakon schrieb:</p>
<blockquote>
<p>Bei deinem Beispiel würde sich eine Klasse eher anbieten. Und bevor ich das direkt in den namespace packen würde, würde ich soagar ein singleton bevorzugen.</p>
</blockquote>
<p>Was ich habe ist eine Funktionssammlung, aber ich brauche nicht mehrere Objekte. Von daher ist eine Klasse bestimmt etwas überdimensioniert ?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720486</guid><dc:creator><![CDATA[C++ Learner]]></dc:creator><pubDate>Wed, 03 Jun 2009 14:59:44 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 15:03:50 GMT]]></title><description><![CDATA[<p>C++ Learner schrieb:</p>
<blockquote>
<p>Was ich habe ist eine Funktionssammlung, aber ich brauche nicht mehrere Objekte. Von daher ist eine Klasse bestimmt etwas überdimensioniert ?!</p>
</blockquote>
<p>Wie drakon sagt, wäre da ein Singleton angebracht:<br />
<a href="http://de.wikipedia.org/wiki/Singleton_(Entwurfsmuster)" rel="nofollow">http://de.wikipedia.org/wiki/Singleton_(Entwurfsmuster)</a></p>
<p>Das praktische daran ist, dass du damit die Variablen verstecken kannst. Die gehen ja auch niemanden was an.</p>
<p>In Boost.Serialization gibt es übrigens eine Hilfsklasse für Singletons:<br />
<a href="http://www.boost.org/doc/libs/1_39_0/libs/serialization/doc/singleton.html" rel="nofollow">http://www.boost.org/doc/libs/1_39_0/libs/serialization/doc/singleton.html</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720489</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 03 Jun 2009 15:03:50 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 15:05:17 GMT]]></title><description><![CDATA[<p>Vielleicht ist ja dein Beispiel einfach nur ungeschickt gewählt, aber das macht so einfach keinen Sinn.<br />
Du hast Daten und Funktionen, die darauf operieren. Das ist genau das Anwendungsgebiet von Klassen..</p>
<p>Freie Funktionen sind gut, aber sie sollte dann wirklich unabhängig sein und nicht noch ein paar Variablen von sonst wo her brauchen. Da machst du dann lieber ein Singleton oder z.B eine Klasse mit statischen Funktionen/Variablen. Dann weiss man sofort, was zusammen gehört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720490</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 03 Jun 2009 15:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 15:12:46 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>danke für eure Hilfe. Ich werde mir das mit dem Singleton mal anschauen, aber kann mir auch jemand zu meinem Verständnis erklären warum das Beispiel von mir nicht ok ist ? Die Variablen sind im namespace ja auch gekapselt, oder worin liegt das Problem ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720493</guid><dc:creator><![CDATA[C++ Learner]]></dc:creator><pubDate>Wed, 03 Jun 2009 15:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 15:36:02 GMT]]></title><description><![CDATA[<p>Nein, gekapselt ist das nicht. Was hindert mich, als Benutzer der Funktionen da einfach das hier zu machen:</p>
<pre><code class="language-cpp">MyNamespace::Result = 666; //evil
</code></pre>
<p>?</p>
<p>Der Sinn von Klassen und privaten Member ist es (unter anderem) die Variablen von unerlaubten Zugriffen zu schützen und nur eine spezifizierte Schnittstelle zu bieten. Damit hat man immer die Kontrolle über alle Variablen, was man bei deinem Ansatz nicht hätte. Wenn man z.b plötzlich will, dass Result nur noch Werte von 0-5 zurückgeben kann, dann müsste man jegliches vorkommen in jeder Zeile von jedem Benutzer des namespaces kontrollieren und das ist böse. Bei einer Klasse, wo der Zurgriff über einen getter geregelt ist reicht genau eine Stelle. (nämlich im getter selbst).</p>
<p>EDIT:<br />
Mist, habe die Variablen auch im Header gesehen.. -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720506</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 03 Jun 2009 15:36:02 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 15:34:06 GMT]]></title><description><![CDATA[<p>C++ Learner schrieb:</p>
<blockquote>
<p>Die Variablen sind im namespace ja auch gekapselt, ...</p>
</blockquote>
<p>Oh, hab gedacht, dass du sie in den Header getan hattest. Habe ich nicht richtig hingesehen.</p>
<p>C++ Learner schrieb:</p>
<blockquote>
<p>... oder worin liegt das Problem?</p>
</blockquote>
<p>Es gibt noch weitere Probleme <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="🙂"
    /><br />
Das praktische an einem Singleton ist, dass du einen Konstruktor hast. In diesem Konstruktor kannst du deine Variablen initialisieren. Sobald das erste Mal das Singleton verwendet wird, sind die Variablen initialisiert, sofern du einen sinnvollen Konstruktor geschrieben hast <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>
<p>In deinem Code ist das nicht der Fall, wodurch leicht Fehler entstehen können, wenn jemand vergisst, die Variablen über eine Funktion zu intialisieren.<br />
Nicht zu vergessen ist auch, dass fundamentale Typen, wie zum Beispiel ein <code>int</code> , nicht automatisch mit 0 initialisiert sind, wenn sie konstruiert werden.</p>
<p>Über den Destruktor eines Singletons kannst du, falls dies nötig ist, am Ende des Programmes Ressourcen wieder freigeben.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720510</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 03 Jun 2009 15:34:06 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 16:05:35 GMT]]></title><description><![CDATA[<p>Danke für die Erklärungen. Da muss ich noch einiges nachholen. In meinen C++ Büchern habe ich nichts über Singleton gefunden, scheint wohl nichts für Anfänger zu sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
Würde dann auch der namespace überflüssig sein ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720538</guid><dc:creator><![CDATA[C++ Learner]]></dc:creator><pubDate>Wed, 03 Jun 2009 16:05:35 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Wed, 03 Jun 2009 16:21:37 GMT]]></title><description><![CDATA[<p>Du kannst das Singleton auch in einem namespace definieren. Das ist kein Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1720549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1720549</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 03 Jun 2009 16:21:37 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Fri, 05 Jun 2009 18:41:56 GMT]]></title><description><![CDATA[<p>ich weiß net genau ob das hier in den thread gehört, aber ich brauche dringends hilfe.</p>
<p>unzwar suche ein buch, skript, oder was anderes, was mir die arbeit erleichtert unter bds 2006 (turbo c++) zu programmieren. explizit brauche ich das für GUI den ich komme zum teil gar nicht mehr weiter und die ganzen fragen hier reinzuschreiben würde den ganzen tag dauern.</p>
<p>MFG cyclops</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721956</guid><dc:creator><![CDATA[greenhorn777]]></dc:creator><pubDate>Fri, 05 Jun 2009 18:41:56 GMT</pubDate></item><item><title><![CDATA[Reply to namespace on Fri, 05 Jun 2009 18:48:21 GMT]]></title><description><![CDATA[<p>greenhorn777 schrieb:</p>
<blockquote>
<p>ich weiß net genau ob das hier in den thread gehört...</p>
</blockquote>
<p>Definitiv nicht. Wenn du schon so unsicher bist, warum hast du keinen eigenen Thread aufgemacht?</p>
<p>Abgesehen davon ist das hier das Standard-C++-Forum. Wir kennen keine GUI und auch kein Turbo-C++... <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/1721961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721961</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 05 Jun 2009 18:48:21 GMT</pubDate></item></channel></rss>