<?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[Wie kann ich dieses Makro ersetzen?]]></title><description><![CDATA[<p>Zu Testzwecken habe ich eine Klasse definiert, die ihre Aufrufe im Klartext protokolliert. Um Schreibfehler und damit Programmfehler zu vermeiden, bin ich auf folgende Lösung gekommen:</p>
<p>//...</p>
<p>#define ACTION(function_name) \<br />
virtual void function_name(void) \<br />
{ \<br />
this-&gt;action_history.push_back(#function_name); \<br />
}</p>
<p>class MockContext : public Context<br />
{<br />
public:<br />
typedef std::vector<a href="std::string" rel="nofollow">std::string</a> action_vec;</p>
<p>MockContext(void);<br />
virtual ~MockContext(void);</p>
<p>ACTION(doA);<br />
ACTION(doB);<br />
ACTION(doC);<br />
ACTION(doD);<br />
//... und noch viele mehr</p>
<p>virtual bool compareAndClear(action_vec &amp;actions);<br />
virtual void clearHistory(void);<br />
virtual void printHistory(void);</p>
<p>private:<br />
action_vec action_history;<br />
};</p>
<p>//...</p>
<p>Das funktioniert wie gewünscht. Allerdings werden Makros in C++ ja als Bäähh angesehen. Meine Frage ist deshalb:</p>
<p>Wie macht man das ohne das Makro?</p>
<p>Vielen Dank für Eure Hinweise.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/330597/wie-kann-ich-dieses-makro-ersetzen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 02:32:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330597.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Jan 2015 00:32:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie kann ich dieses Makro ersetzen? on Sun, 18 Jan 2015 00:32:36 GMT]]></title><description><![CDATA[<p>Zu Testzwecken habe ich eine Klasse definiert, die ihre Aufrufe im Klartext protokolliert. Um Schreibfehler und damit Programmfehler zu vermeiden, bin ich auf folgende Lösung gekommen:</p>
<p>//...</p>
<p>#define ACTION(function_name) \<br />
virtual void function_name(void) \<br />
{ \<br />
this-&gt;action_history.push_back(#function_name); \<br />
}</p>
<p>class MockContext : public Context<br />
{<br />
public:<br />
typedef std::vector<a href="std::string" rel="nofollow">std::string</a> action_vec;</p>
<p>MockContext(void);<br />
virtual ~MockContext(void);</p>
<p>ACTION(doA);<br />
ACTION(doB);<br />
ACTION(doC);<br />
ACTION(doD);<br />
//... und noch viele mehr</p>
<p>virtual bool compareAndClear(action_vec &amp;actions);<br />
virtual void clearHistory(void);<br />
virtual void printHistory(void);</p>
<p>private:<br />
action_vec action_history;<br />
};</p>
<p>//...</p>
<p>Das funktioniert wie gewünscht. Allerdings werden Makros in C++ ja als Bäähh angesehen. Meine Frage ist deshalb:</p>
<p>Wie macht man das ohne das Makro?</p>
<p>Vielen Dank für Eure Hinweise.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438155</guid><dc:creator><![CDATA[TDDler]]></dc:creator><pubDate>Sun, 18 Jan 2015 00:32:36 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann ich dieses Makro ersetzen? on Sun, 18 Jan 2015 00:55:18 GMT]]></title><description><![CDATA[<p>Mock udn Vererbung scheint mir schlimmer.<br />
Was spricht dagegen, die Implementierung con Context anzufassen und da in jede Methode als erste Zeile einen log-Befehl reinzuschreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438157</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 18 Jan 2015 00:55:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann ich dieses Makro ersetzen? on Sun, 18 Jan 2015 01:04:43 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Mock udn Vererbung scheint mir schlimmer.<br />
Was spricht dagegen, die Implementierung con Context anzufassen und da in jede Methode als erste Zeile einen log-Befehl reinzuschreiben?</p>
</blockquote>
<p>Was dagegen spricht? Alles!</p>
<p>Es geht um das Makro und nicht um die Klasse.</p>
<p>(Im Übrigen ist Context abstrakt. Was sonst? Das logging hat dort prinzipiell nichts verloren. Punkt.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438161</guid><dc:creator><![CDATA[TDDler]]></dc:creator><pubDate>Sun, 18 Jan 2015 01:04:43 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann ich dieses Makro ersetzen? on Sun, 18 Jan 2015 01:26:12 GMT]]></title><description><![CDATA[<p>Du proggerst prinzipiell Java. Komma.</p>
<p>Fürs Debuggen und Loggen so sind Makros übrigens ok. Zum Codebauen eher nicht, naja, bist bei Deinem Plan hart an der Grenze (und für meinen Geschmack schon auf der falschen Seite).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438163</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 18 Jan 2015 01:26:12 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann ich dieses Makro ersetzen? on Sun, 18 Jan 2015 01:31:56 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Du proggerst prinzipiell Java. Komma.</p>
<p>Fürs Debuggen und Loggen so sind Makros übrigens ok. Zum Codebauen eher nicht, naja, bist bei Deinem Plan hart an der Grenze (und für meinen Geschmack schon auf der falschen Seite).</p>
</blockquote>
<p>Nach wie vor: Thema verfehlt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438165</guid><dc:creator><![CDATA[TDDler]]></dc:creator><pubDate>Sun, 18 Jan 2015 01:31:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann ich dieses Makro ersetzen? on Sun, 18 Jan 2015 09:21:17 GMT]]></title><description><![CDATA[<p>Du solltest () statt (void) schreiben und darfst this-&gt; weglassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438173</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 18 Jan 2015 09:21:17 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann ich dieses Makro ersetzen? on Sun, 18 Jan 2015 15:11:14 GMT]]></title><description><![CDATA[<p>@TDDler: So, genug getrollt für heute. Falls dein letzter Beitrag (den ich gelöscht habe) ernst gemeint war, solltest du dir erstmal C++-Grundlagen aneignen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438229</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 18 Jan 2015 15:11:14 GMT</pubDate></item></channel></rss>