<?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[grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header]]></title><description><![CDATA[<p>Hallo, ich hab hier ein Verständnisproblem, bei dem ich Hilfe nötig hätte.<br />
Folgender simpler Code kompiliert:</p>
<p>Datei 1: ShopAuch.cpp</p>
<pre><code>#include &quot;stdafx.h&quot;
int countArticles()
{
         return 3;
}
</code></pre>
<p>Datei 2: Run.cpp</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;

int countArticles();

int main()
{
	int zahl = -1; 
	zahl = countArticles();
	std::cout &lt;&lt; zahl &lt;&lt; std::endl;

	// Pro Forma
	std::cout &lt;&lt; &quot;Och, schon zuende?&quot;;
	getchar();

	return 0;
}
</code></pre>
<p>Verwende ich jetzt aber in der Datei ShopAuch.cpp einen namespace:</p>
<pre><code>#include &quot;stdafx.h&quot;
namespace myshopauch{
	int countArticles()
	{
		return 3;
	}
}
</code></pre>
<p>und benutze den namespace in Run.cpp</p>
<pre><code>using namespace myshopauch;
</code></pre>
<p>existiert dieser nicht. Die Direktive</p>
<pre><code>#include ShopAuch.cpp
</code></pre>
<p>führt zu anderen Fehlern.</p>
<p>Definiere ich mir jetzt aber einen Header für die Datei ShopAuch.cpp mit namespace (und lösche die Vorwärtsdeklaration aus der Run.cpp) kompiliert das wunderbar.</p>
<p>Kann ich namespaces nur mit Headern verwenden? Was mach ich falsch? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244500/grundlegendes-verständnisproblem-namespace-verwendung-mit-2-dateien-ohne-header</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 09:53:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244500.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Jul 2009 07:45:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 08:01:38 GMT]]></title><description><![CDATA[<p>Hallo, ich hab hier ein Verständnisproblem, bei dem ich Hilfe nötig hätte.<br />
Folgender simpler Code kompiliert:</p>
<p>Datei 1: ShopAuch.cpp</p>
<pre><code>#include &quot;stdafx.h&quot;
int countArticles()
{
         return 3;
}
</code></pre>
<p>Datei 2: Run.cpp</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;

int countArticles();

int main()
{
	int zahl = -1; 
	zahl = countArticles();
	std::cout &lt;&lt; zahl &lt;&lt; std::endl;

	// Pro Forma
	std::cout &lt;&lt; &quot;Och, schon zuende?&quot;;
	getchar();

	return 0;
}
</code></pre>
<p>Verwende ich jetzt aber in der Datei ShopAuch.cpp einen namespace:</p>
<pre><code>#include &quot;stdafx.h&quot;
namespace myshopauch{
	int countArticles()
	{
		return 3;
	}
}
</code></pre>
<p>und benutze den namespace in Run.cpp</p>
<pre><code>using namespace myshopauch;
</code></pre>
<p>existiert dieser nicht. Die Direktive</p>
<pre><code>#include ShopAuch.cpp
</code></pre>
<p>führt zu anderen Fehlern.</p>
<p>Definiere ich mir jetzt aber einen Header für die Datei ShopAuch.cpp mit namespace (und lösche die Vorwärtsdeklaration aus der Run.cpp) kompiliert das wunderbar.</p>
<p>Kann ich namespaces nur mit Headern verwenden? Was mach ich falsch? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735362</guid><dc:creator><![CDATA[PeterFragt]]></dc:creator><pubDate>Wed, 01 Jul 2009 08:01:38 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 08:00:23 GMT]]></title><description><![CDATA[<p>PeterFragt schrieb:</p>
<blockquote>
<p>...</p>
<pre><code>myshopauch{
</code></pre>
<pre><code>shopauch;
</code></pre>
<p>...</p>
</blockquote>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735372</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 01 Jul 2009 08:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 08:02:37 GMT]]></title><description><![CDATA[<p>sorry, das war ein abtippfehler (der 4. arrrg), das ist es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735374</guid><dc:creator><![CDATA[PeterFragt]]></dc:creator><pubDate>Wed, 01 Jul 2009 08:02:37 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 08:05:47 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also ich würde mal die &quot;precompiled Header&quot;-Option rausnehmen (inkl. der &quot;stdafx.h&quot;).<br />
Das funktioniert nämlich manchmal nicht so gut und führt bisweilen zu solchen Phänomenen...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735376</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 01 Jul 2009 08:05:47 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 09:11:50 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>also ich würde mal die &quot;precompiled Header&quot;-Option rausnehmen (inkl. der &quot;stdafx.h&quot;).<br />
Das funktioniert nämlich manchmal nicht so gut und führt bisweilen zu solchen Phänomenen...</p>
</blockquote>
<p>Hallo, bringt leider nichts. Trotzdem Fehler.</p>
<p>Wenn ich die Direktive</p>
<pre><code>#include &quot;ShopAuch.cpp&quot;
</code></pre>
<p>rausnehme, kennt er den Namensraum nicht (using ...), und wenn ich sie reinehme behauptet der Compiler</p>
<blockquote>
<p>error LNK2005: &quot;int __cdecl myshopauch::countArticles(void)&quot; (?countArticles@myshopauch@@YAHXZ) already defined in Run.obj</p>
</blockquote>
<p>harrr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Ich könnte ja einfach einen Header benutzen, aber irg. macht mich das fuchsig</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735405</guid><dc:creator><![CDATA[PeterFragt]]></dc:creator><pubDate>Wed, 01 Jul 2009 09:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 09:16:04 GMT]]></title><description><![CDATA[<p>PeterFragt schrieb:</p>
<blockquote>
<p>und wenn ich sie reinehme behauptet der Compiler</p>
<blockquote>
<p>error LNK2005: &quot;int __cdecl myshopauch::countArticles(void)&quot; (?countArticles@myshopauch@@YAHXZ) already defined in Run.obj</p>
</blockquote>
</blockquote>
<p>Das ist nicht der Compiler, sondern der Linker.</p>
<p>Du solltest Funktionsdefinitionen nicht in Headerdateien schreiben (Ausnahme Templates oder <code>inline</code> -Funktionen). Implementiere die Funktionen in .cpp-Dateien und schreibe nur die Deklaration in den Header.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735410</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 01 Jul 2009 09:16:04 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 09:16:26 GMT]]></title><description><![CDATA[<p>Zu deiner Datei 2: Run.cpp</p>
<pre><code class="language-cpp">// ...
namespace myshopauch{ 
  int countArticles(); // Deklaration gehört auch in den Namensraum
}
// ...
</code></pre>
<p>Ganz davon abgesehen das man immer mit Headern arbeiten sollte...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735411</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 01 Jul 2009 09:16:26 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 09:44:04 GMT]]></title><description><![CDATA[<p>Die Deklaration der benutzten Objekte/Typen muß ja zur Compilezeit bekannt sein. In Deinem ursprünglich geposteten Beispiel ist aber in run.cpp keine Deklaration für countArticles vorhanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735422</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 01 Jul 2009 09:44:04 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 09:47:13 GMT]]></title><description><![CDATA[<p>Nachtrag:</p>
<p>Das ist, als wenn ich</p>
<p>using namespace std;</p>
<p>benutzen würde, und dann mit zB string arbeiten wollte, ohne daß</p>
<p>#include &lt;string&gt;</p>
<p>vorhanden ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735426</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 01 Jul 2009 09:47:13 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 09:51:00 GMT]]></title><description><![CDATA[<p>mh</p>
<blockquote>
<p>Du solltest Funktionsdefinitionen nicht in Headerdateien schreiben</p>
</blockquote>
<p>Wie kommst du darauf, dass ich das gemacht habe? Ich habe keine Header-Files mehr im Projekt.</p>
<blockquote>
<p>Implementiere die Funktionen in .cpp-Dateien und schreibe nur die Deklaration in den Header</p>
</blockquote>
<p>Damit ging es ja, ich will nur wissen, wieso das nicht ohne klappt.</p>
<blockquote>
<p>Ganz davon abgesehen das man immer mit Headern arbeiten sollte...</p>
</blockquote>
<p>Jau, ich war nur neugierig, warum/wie das ohne geht. Anscheinend nicht zu unrecht, weil es ja nicht problemlos klappte</p>
<pre><code>namespace myshopauch{
  int countArticles(); // Deklaration gehört auch in den Namensraum
}
</code></pre>
<p>Mh, die Deklaration (und Definition) findet doch in der ShopAuch.cpp statt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735430</guid><dc:creator><![CDATA[PeterFragt]]></dc:creator><pubDate>Wed, 01 Jul 2009 09:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 09:55:51 GMT]]></title><description><![CDATA[<pre><code>#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
#include &quot;ShopAuch.cpp&quot;
using namespace myshopauch;

int countArticles();

int main()
{
	int zahl = -1;
	zahl = countArticles();
	std::cout &lt;&lt; zahl &lt;&lt; std::endl;

	// Pro Forma
	std::cout &lt;&lt; &quot;Och, schon zuende?&quot;;
	getchar();

	return 0;
}
</code></pre>
<p>Führt dazu, dass der Compiler (ja, wirklich der Compiler) meckert:</p>
<pre><code>1&gt;f:\visual studio 2008\projects\pointertest\pointertest\namespacetest\namespacetest.cpp(18) : error C2668: 'countArticles' : ambiguous call to overloaded function
1&gt;        f:\visual studio 2008\projects\pointertest\pointertest\namespacetest\namespacetest.cpp(11): could be 'int countArticles(void)'
1&gt;        f:\visual studio 2008\projects\pointertest\pointertest\namespacetest\shopauch.cpp(16): or       'int myshopauch::countArticles(void)'
1&gt;        while trying to match the argument list '(void)'
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1735433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735433</guid><dc:creator><![CDATA[PeterFragt]]></dc:creator><pubDate>Wed, 01 Jul 2009 09:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 10:04:17 GMT]]></title><description><![CDATA[<p>PeterFragt schrieb:</p>
<blockquote>
<pre><code>#include &quot;ShopAuch.cpp&quot;
</code></pre>
</blockquote>
<p>Wo lernt man denn so was?</p>
<p>Grundsätzliches für Ungeübte:<br />
1. Deklaration gehört ins .h,<br />
2. Definition ins .cpp.<br />
3. das .h File mit #include guards ausstatten und<br />
4. nur .h Files inkludieren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735449</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Wed, 01 Jul 2009 10:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 10:08:39 GMT]]></title><description><![CDATA[<p>PeterFragt schrieb:</p>
<blockquote>
<p>Wie kommst du darauf, dass ich das gemacht habe? Ich habe keine Header-Files mehr im Projekt.</p>
</blockquote>
<p>Weil man normalerweise Headerdateien inkludiert und das ein sehr häufiger Fehler ist. Dadurch, dass du .cpp-Dateien inkludiert hast, hast du den gleichen Effekt erzielt. Diese inkludiert man aber nicht!</p>
<p>Wieso willst du auf Header verzichten, aber stattdessen .cpp-Dateien als Header missbrauchen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735452</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 01 Jul 2009 10:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 10:21:11 GMT]]></title><description><![CDATA[<p>PeterFragt schrieb:</p>
<blockquote>
<p>Definiere ich mir jetzt aber einen Header für die Datei ShopAuch.cpp mit namespace (und lösche die Vorwärtsdeklaration aus der Run.cpp) kompiliert das wunderbar.</p>
</blockquote>
<p>Das ist schon der richtige Weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735465</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Wed, 01 Jul 2009 10:21:11 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 10:24:43 GMT]]></title><description><![CDATA[<p>Mh, irg. scheine ich mein Problem nicht gut rüberzubringen.</p>
<p>also ich hab einfach nur mit Namespaces (und 2 Dateien) rumgespielt und das klappte nur mit Header aber nicht ohne.<br />
Da ich neugierig bin, hab ich den namespace weggelassen (ohne Header-Datei) und es klappte. Also kam ich auf den Gedanken, dass ich für einen Namespace immer einen Header benötige, und wenn nein, wieso ich das im Code nicht hinbekomme.</p>
<p>Das mit dem cpp Dateien inkludieren war nur ein verzweifelter Versuch, weil sonst der (ich glaub) Compiler meldet, dass er den Namensraum nicht findet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735469</guid><dc:creator><![CDATA[PeterFragt]]></dc:creator><pubDate>Wed, 01 Jul 2009 10:24:43 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 10:41:28 GMT]]></title><description><![CDATA[<p>poste halt mal ein minimalbsp - und zwar nicht mit irgendwas drin, wie &quot;alles andere ging nicht und dann hab ich halt einfach irgendwas hingeschrieben&quot;...</p>
<p>dann können wir dir deinen fehler wahrscheinlich relativ schnell zeigen</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735485</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 01 Jul 2009 10:41:28 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 10:58:33 GMT]]></title><description><![CDATA[<p>PeterFragt schrieb:</p>
<blockquote>
<p>Mh, irg. scheine ich mein Problem nicht gut rüberzubringen.</p>
<p>also ich hab einfach nur mit Namespaces (und 2 Dateien) rumgespielt und das klappte nur mit Header aber nicht ohne.<br />
Da ich neugierig bin, hab ich den namespace weggelassen (ohne Header-Datei) und es klappte. Also kam ich auf den Gedanken, dass ich für einen Namespace immer einen Header benötige, und wenn nein, wieso ich das im Code nicht hinbekomme.</p>
</blockquote>
<p>In der zu kompilierenden Datei brauchst Du Deklarationen für die Typen/Funktionen, die Du benutzen möchtest. In Deinem Beispiel ohne Namensraum hast Du eine entsprechende Deklaration in der run.cpp gehabt.<br />
In Deinem Beispiel mit Namensraum ist keine Deklaration für die Funktion countArticles in der run.cpp. Das kann nicht kompiliert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735492</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 01 Jul 2009 10:58:33 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 16:40:20 GMT]]></title><description><![CDATA[<p>Mal zwischendrin ein Danke an alle für die Geduld <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>
<p>Minibeispiel, das nicht kompiliert:</p>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace myshopauch; // einziger Unterschied mit Namespace, der nicht bekannt ist, wenn ich keinen Header verwende in der ShopAuch.cpp

int countArticles(); // Vorwärtdeklaration

int main()
{
	int zahl = -1;
	zahl = countArticles();
	return 0;
}
</code></pre>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;string&gt;

namespace myshopauch{ // Das hier weglassen und die using Anweisung und es kompiliert
	int countArticles()
	{
		return 3;
	}
}
</code></pre>
<p>Fehlermeldung:</p>
<pre><code>1&gt;f:\visual studio 2008\projects\pointertest\pointertest\namespacetest\namespacetest.cpp(7) : error C2871: 'myshopauch' : a namespace with this name does not exist
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1735654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735654</guid><dc:creator><![CDATA[PeterFragt]]></dc:creator><pubDate>Wed, 01 Jul 2009 16:40:20 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 16:49:31 GMT]]></title><description><![CDATA[<p>wenn du<br />
<code>int countArticles(); // Vorwärtdeklaration</code><br />
schreibst, ist klar, dass es nicht geht...</p>
<p>1. nimmt man dafür header und<br />
2.:</p>
<pre><code class="language-cpp">namespace mybla
{
  int countArticles();
}
</code></pre>
<p>bb</p>
<p>PS:<br />
<code>#include &lt;stdio.h&gt;</code><br />
ist kein gültiges C++<br />
der header (den du hier gar nicht brauchst) heißt &lt;cstdio&gt;</p>
<p>und</p>
<pre><code class="language-cpp">int main()
{
/*...*/
  return 0; //brauchst du nicht
}
</code></pre>
<p>edit - also so:</p>
<pre><code class="language-cpp">/*main.cpp*/

#include &quot;foo.h&quot;
int main()
{
  my::foo();
}
</code></pre>
<pre><code class="language-cpp">/*foo.h*/

namespace my
{
  void foo();
}
</code></pre>
<pre><code class="language-cpp">/*foo.cpp*/

#include &quot;foo.h&quot;
void my::foo()
{
  /*...*/
}
</code></pre>
<p>alternative für die foo.cpp:</p>
<pre><code class="language-cpp">/*foo.cpp*/

#include &quot;foo.h&quot;
namespace my{

void foo()
{
  /*...*/
}

} //namespace my
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1735657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735657</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 01 Jul 2009 16:49:31 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 17:17:50 GMT]]></title><description><![CDATA[<p>Ich verstehe nicht, wieso du auf Header verzichten willst, es geht aber natürlich auch ohne, mit extern:</p>
<pre><code class="language-cpp">namespace XY {

    int test() {
        return 4;
    }

}
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

namespace XY {
    extern int test();
}

int main() {
    cout &lt;&lt; XY::test() &lt;&lt; endl;
    cin.get();
    return 0;
}
</code></pre>
<p>Du musst den Namespace in beiden Dateien definieren, die Funktion muss mit extern deklariert werden, dann weiß der Compiler, dass sich der Linker darum kümmern muss, die Funktion zu finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735667</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Wed, 01 Jul 2009 17:17:50 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 19:12:19 GMT]]></title><description><![CDATA[<p>Ad aCTa schrieb:</p>
<blockquote>
<p>Ich verstehe nicht, wieso du auf Header verzichten willst, es geht aber natürlich auch ohne, mit extern:<br />
[...]</p>
<pre><code class="language-cpp">[...]
namespace XY {
    extern int test();
}
[...]
</code></pre>
</blockquote>
<p>Das <code>extern</code> ist hier überflüssig. eine Funktionsdeklaration in einem nicht-anonymen Namensraum führt automatisch schon einen Namen (hier &quot;test&quot;) mit externer Bindung (external linkage) ein.</p>
<p>Peter, Du vermischst hier verschiedene Konzepte, die nicht viel miteinander zu tun haben. Namensräume sind total unabhängig davon, wo und wie Quellcode gespeichert wird (im Gegensatz zu den Java Packages zum Beispiel). Das Konzept einer Übersetzungeinheit und was <code>#include</code> eigentlich macht, solltest Du Dir auch nochmal angucken. &quot;Header-Dateien&quot; sind auch nichts Besonderes. Den Compiler interessiert es nicht die Bohne, woher der Quellcode kommt. Das mit den Header-Dateien ist nur eine Konvention, die sich entwickelt hat -- eine <em>gute</em> Konvention. Ein anderes wichtiges Konzept ist die Bindung (linkage).</p>
<p>In jedem guten C++ Buch sollte das alles geklärt werden. Man kann sich echt viel Zeit und Ärger sparen, wenn man das einfach mal nachließt. Ich weiß ja nicht, wie's Euch geht/ging, aber ich fand das höchst unbefriedigend, nicht den Durchblick bzgl Header, Namensräume, Bindung, &quot;One-Definition-Rule&quot;, ... zu haben.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735725</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Wed, 01 Jul 2009 19:12:19 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Wed, 01 Jul 2009 21:01:28 GMT]]></title><description><![CDATA[<p>Ad aCTa schrieb:</p>
<blockquote>
<p>Ich verstehe nicht, wieso du auf Header verzichten willst, es geht aber natürlich auch ohne, mit extern:</p>
<pre><code class="language-cpp">namespace XY {

    int test() {
        return 4;
    }

}
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;

namespace XY {
    extern int test();
}

int main() {
    cout &lt;&lt; XY::test() &lt;&lt; endl;
    cin.get();
    return 0;
}
</code></pre>
<p>Du musst den Namespace in beiden Dateien definieren, die Funktion muss mit extern deklariert werden, dann weiß der Compiler, dass sich der Linker darum kümmern muss, die Funktion zu finden.</p>
</blockquote>
<p>Danke, jetzt klappt es!</p>
<p>Nochmal, bevor einige hier nicht schlafen können <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 />
Ich weiß, dass ich eine Header-Datei benutzen sollte, aber als es klappte war da diese Neugier, ob ich das auch ohne kann, so als Beweis. Und wie ihr seht konnte ich das nicht, also waren da wohl noch Lücken!</p>
<p>Gerade für OOP sind explizite Schnittstellen ja durchaus eine sinnvolle Sache <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Danke allen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735754</guid><dc:creator><![CDATA[PeterFragt]]></dc:creator><pubDate>Wed, 01 Jul 2009 21:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Thu, 02 Jul 2009 07:11:31 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">int main()
{
/*...*/
  return 0; //brauchst du nicht
}
</code></pre>
<p>edit - also so:</p>
<pre><code class="language-cpp">/*main.cpp*/

#include &quot;foo.h&quot;
int main()
{
  my::foo();
}
</code></pre>
<p>...</p>
</blockquote>
<p>Naja - ich nutze trotzdem sehr gerne ein &quot;überflüssiges return&quot;, weil<br />
a) es sowieso nur bei main und 0 funktioniert (ist mir schon mehr als einmal passiert, dass main() später zu einer anderen Funktion wurde)<br />
b) es üblicherweise sowieso eine meiner ersten Überlegungen ist, wann eine Funktion was zurückliefern soll; da wird das Weglassen eher zu einem künstlichen &quot;Kunsttrick&quot;.</p>
<p>Aber es stimmt natürlich: Man darf es weglassen (und Viele wissen das nicht).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735824</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 02 Jul 2009 07:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Thu, 02 Jul 2009 09:09:41 GMT]]></title><description><![CDATA[<p>warum erlaubt der Compiler das denn, wenn ich als Signatur auch</p>
<pre><code>main():void
</code></pre>
<p>benutzen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735877</guid><dc:creator><![CDATA[PeterFragt]]></dc:creator><pubDate>Thu, 02 Jul 2009 09:09:41 GMT</pubDate></item><item><title><![CDATA[Reply to grundlegendes Verständnisproblem: namespace-Verwendung mit 2 Dateien ohne Header on Thu, 02 Jul 2009 11:12:11 GMT]]></title><description><![CDATA[<p>PeterFragt schrieb:</p>
<blockquote>
<p>warum erlaubt der Compiler das denn, wenn ich als Signatur auch</p>
<pre><code>main():void
</code></pre>
<p>benutzen kann?</p>
</blockquote>
<p>Falls Du</p>
<pre><code class="language-cpp">void main();
</code></pre>
<p>meinst: Weil er auch nicht standardkonforme Dinge zulässt (und sie &quot;irgendwie&quot; interpretiert).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1735955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1735955</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 02 Jul 2009 11:12:11 GMT</pubDate></item></channel></rss>