<?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[Probleme mit namespaces in Source-Datei obwohl es im Header geht]]></title><description><![CDATA[<p>Ich habe ein großen Teil C++ Code aus einem anderen Projekt kopiert und möchte diesen über eine Wrapper-Klasse <code>Parser</code> nutzen:</p>
<p>Parser.hpp</p>
<pre><code>...
#include &quot;sbmtc/smtparser.hpp&quot;

using namespace std;

namespace mrm {

class Parser {
private:
	const string filename;

public:
	Parser(string _filename);
};
</code></pre>
<p><code>sbmtc</code> ist ein Unterordner in den ich Dateien aus dem anderen Projekt reinkopiert habe. Die Klasse, die ich aus dem anderen Projekt ansprechen will sind alle in einem namespace der ebenfalls <code>sbmtc</code> heißt.</p>
<p>Wenn ich jetzt den namespace in <code>Parser.cpp</code> (im Folgenden) z.B. im Constructor ansprechen will gibt es kein Problem:</p>
<pre><code>#include &quot;Parser.h&quot;

namespace mrm {
Parser::Parser(string _filename) : filename(_filename) {
	sbmtc::Console logger(std::cout);

}}
</code></pre>
<p>Versuche ich es jedoch in der Datei <code>Parser.cpp</code> z.B. so</p>
<pre><code>class Parser {
private:
	const string filename;
	sbmtc::Console logger;
</code></pre>
<p>bekomme ich Fehlermeldungen.</p>
<pre><code>./mrm/Parser.h:24:2: Fehler: »sbmtc« bezeichnet keinen Typ
</code></pre>
<p>Ich habe es auch schon mit <code>using namspace sbmtc;</code> oder <code>using sbmtc::Console;</code> versucht. <code>sbmtc</code> wird nicht als namespace erkannt. Ich hab die Code-Beispiele etwas verkürzt und vereinfacht. Fehlen noch Informationen?</p>
<p>Woran kann das liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312700/probleme-mit-namespaces-in-source-datei-obwohl-es-im-header-geht</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 17:50:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312700.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Jan 2013 20:46:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit namespaces in Source-Datei obwohl es im Header geht on Fri, 11 Jan 2013 20:46:25 GMT]]></title><description><![CDATA[<p>Ich habe ein großen Teil C++ Code aus einem anderen Projekt kopiert und möchte diesen über eine Wrapper-Klasse <code>Parser</code> nutzen:</p>
<p>Parser.hpp</p>
<pre><code>...
#include &quot;sbmtc/smtparser.hpp&quot;

using namespace std;

namespace mrm {

class Parser {
private:
	const string filename;

public:
	Parser(string _filename);
};
</code></pre>
<p><code>sbmtc</code> ist ein Unterordner in den ich Dateien aus dem anderen Projekt reinkopiert habe. Die Klasse, die ich aus dem anderen Projekt ansprechen will sind alle in einem namespace der ebenfalls <code>sbmtc</code> heißt.</p>
<p>Wenn ich jetzt den namespace in <code>Parser.cpp</code> (im Folgenden) z.B. im Constructor ansprechen will gibt es kein Problem:</p>
<pre><code>#include &quot;Parser.h&quot;

namespace mrm {
Parser::Parser(string _filename) : filename(_filename) {
	sbmtc::Console logger(std::cout);

}}
</code></pre>
<p>Versuche ich es jedoch in der Datei <code>Parser.cpp</code> z.B. so</p>
<pre><code>class Parser {
private:
	const string filename;
	sbmtc::Console logger;
</code></pre>
<p>bekomme ich Fehlermeldungen.</p>
<pre><code>./mrm/Parser.h:24:2: Fehler: »sbmtc« bezeichnet keinen Typ
</code></pre>
<p>Ich habe es auch schon mit <code>using namspace sbmtc;</code> oder <code>using sbmtc::Console;</code> versucht. <code>sbmtc</code> wird nicht als namespace erkannt. Ich hab die Code-Beispiele etwas verkürzt und vereinfacht. Fehlen noch Informationen?</p>
<p>Woran kann das liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2288818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2288818</guid><dc:creator><![CDATA[ersooo]]></dc:creator><pubDate>Fri, 11 Jan 2013 20:46:25 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit namespaces in Source-Datei obwohl es im Header geht on Fri, 11 Jan 2013 20:56:24 GMT]]></title><description><![CDATA[<p>Zeig mal den gesamten Inhalt des Parser.cpp Files in der Variante die Probleme macht, plus den Inhalt des Parser.hpp Files, sowie aller anderen Files die von Parser.cpp inkludiert werden.</p>
<p>Ohne das können wir nur raten.<br />
Dass du versuchst in Parser.cpp die Klasse Parser zu de<strong>klar</strong>ieren ist ein Indiz für Planlosigkeit und damit die indirekte Ursache des Fehlers, hilft (zumindest mir) aber nicht auf die direkte Ursache zu schliessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2288821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2288821</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 11 Jan 2013 20:56:24 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit namespaces in Source-Datei obwohl es im Header geht on Fri, 11 Jan 2013 21:08:04 GMT]]></title><description><![CDATA[<pre><code>#ifndef PARSER_H_
#define PARSER_H_

#include &lt;string&gt;
#include &lt;iostream&gt;
#include &quot;sbmtc/smtparser.hpp&quot;

using namespace std;

namespace mrm {

class Parser {
private:
	const string filename;
	sbmtc::Console logger;

public:
	Parser(string _filename);

};

} /* namespace mrm */
#endif /* PARSER_H_ */
</code></pre>
<pre><code>#include &quot;Parser.h&quot;

namespace mrm {
Parser::Parser(string _filename) : filename(_filename) {}
}
</code></pre>
<p>Die Fehlermeldung in dem Fall ist</p>
<pre><code>./mrm/Parser.h:24:2: Fehler: »sbmtc« bezeichnet keinen Typ
</code></pre>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Dass du versuchst in Parser.cpp die Klasse Parser zu de<strong>klar</strong>ieren ist ein Indiz für Planlosigkeit und damit die indirekte Ursache des Fehlers, hilft (zumindest mir) aber nicht auf die direkte Ursache zu schliessen.</p>
</blockquote>
<p>Ich verstehe nicht ganz was du damit meinst. Dass ich eine Klasse im Konstruktor deklariert habe war nur ein Test, der merkwürdigerweise funktioniert. Ich hätte gerne eine Instanz von <code>Console</code> als Element in <code>Parser</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2288823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2288823</guid><dc:creator><![CDATA[errrso]]></dc:creator><pubDate>Fri, 11 Jan 2013 21:08:04 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit namespaces in Source-Datei obwohl es im Header geht on Fri, 11 Jan 2013 21:24:04 GMT]]></title><description><![CDATA[<p>Und was steht in smtparser.hpp?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2288824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2288824</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 11 Jan 2013 21:24:04 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit namespaces in Source-Datei obwohl es im Header geht on Fri, 11 Jan 2013 21:29:27 GMT]]></title><description><![CDATA[<p>Ich tippe mal auf rekursive #includes.<br />
Man beachte, zu welcher Datei die fehlerhafte Zeile gehört...<br />
Die Klasse dann nochmal in der .cpp zu defineren wird nat. schiefgehen, aber soweit kommt der Compiler hier gar nicht erst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2288827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2288827</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 11 Jan 2013 21:29:27 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit namespaces in Source-Datei obwohl es im Header geht on Fri, 11 Jan 2013 21:53:06 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Und was steht in smtparser.hpp?</p>
</blockquote>
<p>Es ist eine lange Datei. Ich kürze die etwas ab und hoffe die richtigen Sachen zu erwischen:</p>
<pre><code>#ifndef __PARSER__HPP__
#define __PARSER__HPP__

#include &lt;string&gt;
...

#include &quot;logging.hpp&quot;
...

namespace sbmtc {
...
}
#endif
</code></pre>
<p><code>Console</code> ist in <code>logging.hpp</code></p>
<pre><code>#ifndef __logging_hpp__
#define __logging_hpp__

#include &lt;iostream&gt;
...

namespace sbmtc {
  class Console: public BMCLoggingMessages, public ParserLoggingMessages {
  public:
  ...
  }

} // end namespace sbmtc

#endif
</code></pre>
<p>camper schrieb:</p>
<blockquote>
<p>Die Klasse dann nochmal in der .cpp zu defineren wird nat. schiefgehen, aber soweit kommt der Compiler hier gar nicht erst.</p>
</blockquote>
<p>An welcher Stelle?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2288835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2288835</guid><dc:creator><![CDATA[errrso]]></dc:creator><pubDate>Fri, 11 Jan 2013 21:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit namespaces in Source-Datei obwohl es im Header geht on Fri, 11 Jan 2013 21:59:57 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/304133" rel="nofollow">http://www.c-plusplus.net/forum/304133</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2288836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2288836</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 11 Jan 2013 21:59:57 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit namespaces in Source-Datei obwohl es im Header geht on Sat, 12 Jan 2013 00:32:39 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Ich tippe mal auf rekursive #includes.</p>
</blockquote>
<p>Und ich tippe du wirst damit wohl Recht haben <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>
<p>Vermutlich steht in irgendeinem sbmtc Header-File ein <code>#include &lt;parser.h&gt;</code> wo ein <code>#include &lt;sbmtc/parser.h&gt;</code> oder <code>#include &quot;parser.h&quot;</code> stehen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2288854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2288854</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 12 Jan 2013 00:32:39 GMT</pubDate></item></channel></rss>