<?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[Ambiguity durch Namespaces]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne in meinem Programm anfangen, Namespaces zu nutzen und bin dabei auf folgendes Problem gestoßen: Ich habe im File MCMC.h alles in einen Namespace MCMC gepackt</p>
<pre><code class="language-cpp">#ifndef MCMC_H
#define MCMC_H

#include &quot;standard.h&quot;

namespace MCMC {
	class Results_MCMC
	{
		...
	};

	...
}

#endif
</code></pre>
<p>Wenn ich das nun in <a href="http://main.cc" rel="nofollow">main.cc</a> benutze</p>
<pre><code class="language-cpp">#include &quot;standard.h&quot;

#include &quot;classftn.h&quot;
...
#include &quot;MCMC.h&quot;
...

using namespace MCMC;

int main(int argc, char** argv)
{
	...
	Results_MCMC res_mcmc = cls.log_prob_var(tip_seqs, 30, 1);
	...
}
</code></pre>
<p>erhalte ich die Fehlermeldung</p>
<blockquote>
<p>../main.cc: In function ‘int main(int, char**)’:<br />
../main.cc:76: error: reference to ‘Results_MCMC’ is ambiguous<br />
../src/classification/classftn.h:9: error: candidates are: struct Results_MCMC<br />
../src/classification/MCMC.h:14: error: class MCMC::Results_MCMC</p>
</blockquote>
<p>da in classftn.h (wird von <a href="http://main.cc" rel="nofollow">main.cc</a> eingebunden) mittels</p>
<pre><code class="language-cpp">#define CLASSFCTN_H

#include &quot;standard.h&quot;

#include &quot;empty.h&quot;

class Results_MCMC;

...

#endif
</code></pre>
<p>Results_MCMC vorab deklariert wird. Kann man diese Vorabdeklaration irgendwie umformulieren, dass der Compiler weiss, dass ich bezug auf MCMC::Results_MCMC nehmen will? Oder gibt es andere Lösungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227615/ambiguity-durch-namespaces</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 21:55:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227615.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Nov 2008 19:54:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ambiguity durch Namespaces on Mon, 17 Nov 2008 19:54:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne in meinem Programm anfangen, Namespaces zu nutzen und bin dabei auf folgendes Problem gestoßen: Ich habe im File MCMC.h alles in einen Namespace MCMC gepackt</p>
<pre><code class="language-cpp">#ifndef MCMC_H
#define MCMC_H

#include &quot;standard.h&quot;

namespace MCMC {
	class Results_MCMC
	{
		...
	};

	...
}

#endif
</code></pre>
<p>Wenn ich das nun in <a href="http://main.cc" rel="nofollow">main.cc</a> benutze</p>
<pre><code class="language-cpp">#include &quot;standard.h&quot;

#include &quot;classftn.h&quot;
...
#include &quot;MCMC.h&quot;
...

using namespace MCMC;

int main(int argc, char** argv)
{
	...
	Results_MCMC res_mcmc = cls.log_prob_var(tip_seqs, 30, 1);
	...
}
</code></pre>
<p>erhalte ich die Fehlermeldung</p>
<blockquote>
<p>../main.cc: In function ‘int main(int, char**)’:<br />
../main.cc:76: error: reference to ‘Results_MCMC’ is ambiguous<br />
../src/classification/classftn.h:9: error: candidates are: struct Results_MCMC<br />
../src/classification/MCMC.h:14: error: class MCMC::Results_MCMC</p>
</blockquote>
<p>da in classftn.h (wird von <a href="http://main.cc" rel="nofollow">main.cc</a> eingebunden) mittels</p>
<pre><code class="language-cpp">#define CLASSFCTN_H

#include &quot;standard.h&quot;

#include &quot;empty.h&quot;

class Results_MCMC;

...

#endif
</code></pre>
<p>Results_MCMC vorab deklariert wird. Kann man diese Vorabdeklaration irgendwie umformulieren, dass der Compiler weiss, dass ich bezug auf MCMC::Results_MCMC nehmen will? Oder gibt es andere Lösungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616154</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Mon, 17 Nov 2008 19:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to Ambiguity durch Namespaces on Mon, 17 Nov 2008 20:01:25 GMT]]></title><description><![CDATA[<p>Die Vorwärtsdeklaration kannst du auch in den Namespace packen.</p>
<p>Aber irgendwie ist es doch überflüssig, im Namespace <code>MCMC</code> die Klassen noch mit <code>_MCMC</code> zu ergänzen, oder? <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/1616160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616160</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 17 Nov 2008 20:01:25 GMT</pubDate></item><item><title><![CDATA[Reply to Ambiguity durch Namespaces on Mon, 17 Nov 2008 20:18:57 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Die Vorwärtsdeklaration kannst du auch in den Namespace packen.</p>
</blockquote>
<p>Muss ich dann classftn.h wie folgt umschreiben</p>
<pre><code class="language-cpp">#define CLASSFCTN_H

#include &quot;standard.h&quot;

#include &quot;empty.h&quot;

namespace MCMC {
    class Results_MCMC;
}

...

#endif
</code></pre>
<p>oder gibt es da irgendwelche besseren Alternativen?</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Aber irgendwie ist es doch überflüssig, im Namespace <code>MCMC</code> die Klassen noch mit <code>_MCMC</code> zu ergänzen, oder? <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>
</blockquote>
<p>Das stimmt. Die Namensgebung ist hier historisch bedingt (bisher hatte ich ja keine Namespaces benutzt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616165</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Mon, 17 Nov 2008 20:18:57 GMT</pubDate></item><item><title><![CDATA[Reply to Ambiguity durch Namespaces on Mon, 17 Nov 2008 20:22:35 GMT]]></title><description><![CDATA[<p>ingobulla schrieb:</p>
<blockquote>
<p>Muss ich dann classftn.h wie folgt umschreiben [...] oder gibt es da irgendwelche besseren Alternativen?</p>
</blockquote>
<p>Nein, du musst es so machen. Was verstehst du unter einer &quot;besseren&quot; Alternative?</p>
<p>Und ausserdem würde ich mit <code>using namespace</code> sparsam umgehen. Namensräume haben keinen Sinn, wenn man sie immer global bekannt macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616167</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 17 Nov 2008 20:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Ambiguity durch Namespaces on Mon, 17 Nov 2008 20:37:50 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Nein, du musst es so machen. Was verstehst du unter einer &quot;besseren&quot; Alternative?</p>
</blockquote>
<p>Im Wesentlichen zielte die Frage darauf ab, ob ich deine Erklärung korrekt verstanden habe (insbesondere bezüglich der genauen programmiertechnischen Umsetzung).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616175</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Mon, 17 Nov 2008 20:37:50 GMT</pubDate></item></channel></rss>