<?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[Fehlermeldung, Templateklassen, Aufruf Methode aus Basisklasse]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe zwei Templateklassen Base_NC</p>
<pre><code class="language-cpp">template&lt;class N, class C, class PC, class T&gt; class Base_NC
{
private:
	static LoggerPtr m_logger;

	...
protected:
	LoggerPtr&amp; logger() { return m_logger; }

	...
public:
	virtual string str_id() const = 0;

	...
};
</code></pre>
<p>und Coal_NC</p>
<pre><code class="language-cpp">template&lt;class N, class ON, class C, class CC, class PC, class T&gt; class Coal_NC
: public virtual Intern_NC&lt;C&gt;, public virtual NC_with_1_Nd&lt;N, ON, C, PC, T&gt;
{
private:
	...
public:
	using Base_NC&lt;N, C, PC, T&gt;::logger;
	void log_prob_acids();

	...
};
</code></pre>
<p>wobei Coal_NC mittelbar aus Base_NC abgeleitet ist (über NC_with_1_Nd). Wenn ich nun log_prob_acids als</p>
<pre><code class="language-cpp">template&lt;class N, class ON, class C, class CC, class PC, class T&gt; void Coal_NC&lt;N, ON, C, CC, PC, T&gt;::log_prob_acids()
{
	int id = 0;
	LOG4CXX_DEBUG(logger(), &quot;id: &quot; &lt;&lt; id);
	LOG4CXX_DEBUG(logger(), &quot;id: &quot; &lt;&lt; Base_NC&lt;N, C, PC, T&gt;::str_id());
}
</code></pre>
<p>definiere, erhalte ich die Fehlermeldung</p>
<blockquote>
<p>../src/node/base_nc_def.h:267:66: error: macro &quot;LOG4CXX_DEBUG&quot; passed 5 arguments, but takes just 2<br />
../src/node/base_nc_def.h: In member function ‘void Coal_NC&lt;N, ON, C, CC, PC, T&gt;::log_prob_acids()’:<br />
../src/node/base_nc_def.h:267: error: ‘LOG4CXX_DEBUG’ was not declared in this scope</p>
</blockquote>
<p>bzgl. der Zeile</p>
<pre><code class="language-cpp">LOG4CXX_DEBUG(logger(), &quot;id: &quot; &lt;&lt; Base_NC&lt;N, C, PC, T&gt;::str_id());
</code></pre>
<p>LOG4CXX_DEBUG ist ein Makro aus der Logging-Bibliothek log4cxx und erwartet einen sogenannten Logger und die auszugebende Nachricht (ich hoffe die obige Zeile</p>
<pre><code class="language-cpp">LOG4CXX_DEBUG(logger(), &quot;id: &quot; &lt;&lt; id);
</code></pre>
<p>illustriert, wie es zu benutzen ist (die Zeile kompiliert)).</p>
<p>Weiss jemand, wie man das richtig macht (ohne using zu benutzen)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/225931/fehlermeldung-templateklassen-aufruf-methode-aus-basisklasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 08:34:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/225931.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Oct 2008 09:46:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlermeldung, Templateklassen, Aufruf Methode aus Basisklasse on Mon, 27 Oct 2008 09:46:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe zwei Templateklassen Base_NC</p>
<pre><code class="language-cpp">template&lt;class N, class C, class PC, class T&gt; class Base_NC
{
private:
	static LoggerPtr m_logger;

	...
protected:
	LoggerPtr&amp; logger() { return m_logger; }

	...
public:
	virtual string str_id() const = 0;

	...
};
</code></pre>
<p>und Coal_NC</p>
<pre><code class="language-cpp">template&lt;class N, class ON, class C, class CC, class PC, class T&gt; class Coal_NC
: public virtual Intern_NC&lt;C&gt;, public virtual NC_with_1_Nd&lt;N, ON, C, PC, T&gt;
{
private:
	...
public:
	using Base_NC&lt;N, C, PC, T&gt;::logger;
	void log_prob_acids();

	...
};
</code></pre>
<p>wobei Coal_NC mittelbar aus Base_NC abgeleitet ist (über NC_with_1_Nd). Wenn ich nun log_prob_acids als</p>
<pre><code class="language-cpp">template&lt;class N, class ON, class C, class CC, class PC, class T&gt; void Coal_NC&lt;N, ON, C, CC, PC, T&gt;::log_prob_acids()
{
	int id = 0;
	LOG4CXX_DEBUG(logger(), &quot;id: &quot; &lt;&lt; id);
	LOG4CXX_DEBUG(logger(), &quot;id: &quot; &lt;&lt; Base_NC&lt;N, C, PC, T&gt;::str_id());
}
</code></pre>
<p>definiere, erhalte ich die Fehlermeldung</p>
<blockquote>
<p>../src/node/base_nc_def.h:267:66: error: macro &quot;LOG4CXX_DEBUG&quot; passed 5 arguments, but takes just 2<br />
../src/node/base_nc_def.h: In member function ‘void Coal_NC&lt;N, ON, C, CC, PC, T&gt;::log_prob_acids()’:<br />
../src/node/base_nc_def.h:267: error: ‘LOG4CXX_DEBUG’ was not declared in this scope</p>
</blockquote>
<p>bzgl. der Zeile</p>
<pre><code class="language-cpp">LOG4CXX_DEBUG(logger(), &quot;id: &quot; &lt;&lt; Base_NC&lt;N, C, PC, T&gt;::str_id());
</code></pre>
<p>LOG4CXX_DEBUG ist ein Makro aus der Logging-Bibliothek log4cxx und erwartet einen sogenannten Logger und die auszugebende Nachricht (ich hoffe die obige Zeile</p>
<pre><code class="language-cpp">LOG4CXX_DEBUG(logger(), &quot;id: &quot; &lt;&lt; id);
</code></pre>
<p>illustriert, wie es zu benutzen ist (die Zeile kompiliert)).</p>
<p>Weiss jemand, wie man das richtig macht (ohne using zu benutzen)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605414</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Mon, 27 Oct 2008 09:46:34 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, Templateklassen, Aufruf Methode aus Basisklasse on Mon, 27 Oct 2008 09:55:53 GMT]]></title><description><![CDATA[<p>Makros mögen keine Parameter mit Kommata. Das ist das Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605417</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 27 Oct 2008 09:55:53 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, Templateklassen, Aufruf Methode aus Basisklasse on Mon, 27 Oct 2008 10:00:51 GMT]]></title><description><![CDATA[<p>Ein ekliger Weg das zu übergehen ist es, indem du<br />
#define _MEIN_KOMMA ,<br />
definierst, und das anstelle der Kommata deiner Templateparamter in dem Makroaufruf verwendest.</p>
<p>EDIT:</p>
<p>Wäre dann:</p>
<pre><code class="language-cpp">#define _MEIN_KOMMA , 
//... define muss natürlich nach dem include von log4cxx
LOG4CXX_DEBUG(logger(), &quot;id: &quot; &lt;&lt; Base_NC&lt;N _MEIN_KOMMA C _MEIN_KOMMA PC _MEIN_KOMMA T&gt;::str_id());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1605419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605419</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 27 Oct 2008 10:00:51 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, Templateklassen, Aufruf Methode aus Basisklasse on Mon, 27 Oct 2008 10:03:47 GMT]]></title><description><![CDATA[<p>Noch eine Alternative, welche in diesem Fall funktionieren könnte. Aber Achtung, das geht nicht immer, da die Klammern direkt mitübernommen werden.</p>
<pre><code class="language-cpp">LOG4CXX_DEBUG(logger(), (&quot;id: &quot; &lt;&lt; Base_NC&lt;N, C, PC, T&gt;::str_id()));
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1605422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1605422</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 27 Oct 2008 10:03:47 GMT</pubDate></item></channel></rss>