<?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[Makros Parameterübergabe (Trennung durch Kommata)]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte ein paar Getter/Setter als Makros definieren (bewusst nicht als Inline-Funktionen).</p>
<p>Nun habe ich folgendes Attribut in einer Klasse:</p>
<pre><code>map&lt;int, Punkte*&gt;* Blablup;
</code></pre>
<p>Mit folgender Anweisung möchte ich eine Getter-Methode Expandieren:</p>
<pre><code>GetMacro(Blablup, map&lt;int, Punkte*&gt;*);
</code></pre>
<p>Die dazugehörige Makrodefinition lautet folgendermaßen:</p>
<pre><code>#define GetMacro(name, type) virtual type Get##name () { return this-&gt;name; }
</code></pre>
<p>Durch das Komma innerhalb von &quot;map&lt;int, Punkte*&gt;*&quot; erhalte ich eine Fehlermeldung, da der Präprozessor dies als 2 Parameter erkennt.</p>
<p>Wie kann ich das hinkriegen?</p>
<p>Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220091/makros-parameterübergabe-trennung-durch-kommata</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 11:00:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220091.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Aug 2008 19:57:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Makros Parameterübergabe (Trennung durch Kommata) on Mon, 11 Aug 2008 19:57:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte ein paar Getter/Setter als Makros definieren (bewusst nicht als Inline-Funktionen).</p>
<p>Nun habe ich folgendes Attribut in einer Klasse:</p>
<pre><code>map&lt;int, Punkte*&gt;* Blablup;
</code></pre>
<p>Mit folgender Anweisung möchte ich eine Getter-Methode Expandieren:</p>
<pre><code>GetMacro(Blablup, map&lt;int, Punkte*&gt;*);
</code></pre>
<p>Die dazugehörige Makrodefinition lautet folgendermaßen:</p>
<pre><code>#define GetMacro(name, type) virtual type Get##name () { return this-&gt;name; }
</code></pre>
<p>Durch das Komma innerhalb von &quot;map&lt;int, Punkte*&gt;*&quot; erhalte ich eine Fehlermeldung, da der Präprozessor dies als 2 Parameter erkennt.</p>
<p>Wie kann ich das hinkriegen?</p>
<p>Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562908</guid><dc:creator><![CDATA[Delerium]]></dc:creator><pubDate>Mon, 11 Aug 2008 19:57:01 GMT</pubDate></item><item><title><![CDATA[Reply to Makros Parameterübergabe (Trennung durch Kommata) on Mon, 11 Aug 2008 20:06:19 GMT]]></title><description><![CDATA[<p>1. wieso willst du das über ein makro lösen?</p>
<p>2. wenn du den eintrag map&lt;...&gt; in klammern setzt, sollte das gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562917</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Mon, 11 Aug 2008 20:06:19 GMT</pubDate></item><item><title><![CDATA[Reply to Makros Parameterübergabe (Trennung durch Kommata) on Mon, 11 Aug 2008 20:18:24 GMT]]></title><description><![CDATA[<p>ghorst schrieb:</p>
<blockquote>
<p>2. wenn du den eintrag map&lt;...&gt; in klammern setzt, sollte das gehen.</p>
</blockquote>
<p>Ne. Geht nicht, weil das Trennungskomma in map als weiterer Parameter folgend erwartet wird.</p>
<p>Hmm. Obwohl das wohl das Wohl einer der Totsünden von C++ ist find ich interessant. Mal schauen, ob ich da was finden kann. <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>EDIT:<br />
Dacht ichs doch, dass es geht. :p</p>
<pre><code class="language-cpp">#define GetMacro(name,type) virtual type Get##name () { return this-&gt;name; }
#define comma ,

class foo
{
	std::map&lt;int,float&gt; f;
	GetMacro(f,std::map&lt;int comma float&gt;);
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1562923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562923</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 11 Aug 2008 20:18:24 GMT</pubDate></item><item><title><![CDATA[Reply to Makros Parameterübergabe (Trennung durch Kommata) on Mon, 11 Aug 2008 20:22:54 GMT]]></title><description><![CDATA[<p>ok, ihr trickser <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>Vielen Dank für den Vorschlag.</p>
<p>Gibts noch ne bessere Lösung Getter und Setter Quellcodesparend zu implementieren? Von mir aus auch mit Inline-Funktionen...</p>
<p>Ich hab nur keine Lust auf</p>
<pre><code>inline int GetX() { return X; }
inline int GetY() { return Y; }

usw.
</code></pre>
<p>Kann man das für die Variablen zusammenfassen?<br />
Gibts da nicht irgendwas mit Templates? Kenne mich noch nicht so gut aus!</p>
<p>Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562930</guid><dc:creator><![CDATA[Delerium]]></dc:creator><pubDate>Mon, 11 Aug 2008 20:22:54 GMT</pubDate></item><item><title><![CDATA[Reply to Makros Parameterübergabe (Trennung durch Kommata) on Mon, 11 Aug 2008 20:26:49 GMT]]></title><description><![CDATA[<p>Also in Visual C++ funktioniert das mit dem Komma, so wie man es sich normalerweise wünscht.</p>
<p>Ansonsten schau dir mal die Boost Preprocessor Bibliothek an, die haben da entsprechende Generatoren dafür.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1562932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562932</guid><dc:creator><![CDATA[Tippgeber]]></dc:creator><pubDate>Mon, 11 Aug 2008 20:26:49 GMT</pubDate></item><item><title><![CDATA[Reply to Makros Parameterübergabe (Trennung durch Kommata) on Mon, 11 Aug 2008 20:27:40 GMT]]></title><description><![CDATA[<p>Hmm. Eigentlich mache ich es ganz Normal mit Get usw. Es gibt ja UML Editoren, die dir gleich die Getter und Setter schreiben können.</p>
<p>Aber wenn du wirklich viele Daten hast, die zusammen gehören, kannst du ja ein struct machen und dann das struct zurückgeben, anstatt so viele Getter zu schreiben.</p>
<pre><code class="language-cpp">struct s
{
int a;
int b;
float c;
std::vector&lt;int&gt; v;
...
};

class foo ()
{
s _s;
public:
s get_s ()const {return _s;}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1562933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1562933</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 11 Aug 2008 20:27:40 GMT</pubDate></item><item><title><![CDATA[Reply to Makros Parameterübergabe (Trennung durch Kommata) on Tue, 12 Aug 2008 16:15:48 GMT]]></title><description><![CDATA[<blockquote>
<p>Also in Visual C++ funktioniert das mit dem Komma, so wie man es sich normalerweise wünscht.</p>
</blockquote>
<p>Also da hab ich andere Erfahrungen gemacht.</p>
<p>----</p>
<p>Verwende einfach nen typedef.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563496</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 12 Aug 2008 16:15:48 GMT</pubDate></item><item><title><![CDATA[Reply to Makros Parameterübergabe (Trennung durch Kommata) on Tue, 12 Aug 2008 16:45:12 GMT]]></title><description><![CDATA[<p>Delerium schrieb:</p>
<blockquote>
<p>Kann man das für die Variablen zusammenfassen?</p>
</blockquote>
<p>Wieso willst du sparen? Hat das einen tieferen Grund oder bist du einfach nur zu faul?<br />
Wenn es um die Faulheit geht, dann gibt es da durchaus bessere Möglichkeiten. Mit Visual Assist X kann man zum Beispiel Code-Snippets erstellen. Oder du benutzt einen entsprechenden UML-Editor, wie es drakon schon vorgeschlagen hat.</p>
<p>Im allgemeinen gilt: Makros sind böse! Nur wenn es wirklich nicht anders geht, sollte man Makros verwenden.<br />
Wenn du Makros einsetzt, um deiner Faulheit entgegen zu kommen, dann kann ich dir versprechen, dass deine Faulheit in Zukunft viel mehr zu leiden haben wird.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1563524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1563524</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 12 Aug 2008 16:45:12 GMT</pubDate></item></channel></rss>