<?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] Definitionsprobleme beim Benutzen von Methoden]]></title><description><![CDATA[<p>Erstmal, Guten Tag.<br />
Ich wollte ein Makro erstellen, dass eine Methode darstellt, an die ein mehr oder weniger fester Parameter übergeben werden soll. Dieser Parameter widerum, ist auch eine Methode (oder eher deren Rückgabewert) und da scheint auch das Problem zu sein. Hier einmal das Makro:</p>
<pre><code class="language-cpp">#define SetPlayerLevelUp()            SetPlayerLevel(GetPlayerLevel()+1)
</code></pre>
<p>wenn ich das Makro jetzt z.B. so aufrufe</p>
<pre><code class="language-cpp">player.SetPlayerLevelUp ();
</code></pre>
<p>weiß der Compiler zwar, dass SetPlayerLevel (...) eine Methode von der Klasse PLAYER ist, allerdings eben nicht, dass auch GetPlayerLevel () eben eine solche ist. Da ist dann auch das Problem. Ich habe zwar selbst die unrealistischten Lösungsansätze versucht, aber es hilft nichts. Also z.B.</p>
<pre><code class="language-cpp">#define SetPlayerLevelUp()            SetPlayerLevel(PLAYER::GetPlayerLevel()+1)

//oder

#define SetPlayerLevelUp()            SetPlayerLevel(PLAYER-&gt;GetPlayerLevel()+1)

//oder

#define SetPlayerLevelUp()            SetPlayerLevel(PLAYER.GetPlayerLevel()+1)

//oder

#define SetPlayerLevelUp(x)            x.SetPlayerLevel(x.GetPlayerLevel()+1)
</code></pre>
<p>die letzte Möglichkeit funktioniert zwar, allerdings wollte ich sowas umgehen (Übergabe von Parametern etc.)<br />
Jetzt meine Frage. Kann ich das überhaupt mit Makros lösen, wenn ja wie, oder muss ich dann dazu doch noch eine Methode schreiben (wer auch nicht der Weltuntergang aber eher 3. Wahl)...</p>
<p>Danke im voraus, Fake oder Echt</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/206242/makros-definitionsprobleme-beim-benutzen-von-methoden</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 06:57:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206242.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Feb 2008 14:45:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Makros] Definitionsprobleme beim Benutzen von Methoden on Fri, 22 Feb 2008 14:45:29 GMT]]></title><description><![CDATA[<p>Erstmal, Guten Tag.<br />
Ich wollte ein Makro erstellen, dass eine Methode darstellt, an die ein mehr oder weniger fester Parameter übergeben werden soll. Dieser Parameter widerum, ist auch eine Methode (oder eher deren Rückgabewert) und da scheint auch das Problem zu sein. Hier einmal das Makro:</p>
<pre><code class="language-cpp">#define SetPlayerLevelUp()            SetPlayerLevel(GetPlayerLevel()+1)
</code></pre>
<p>wenn ich das Makro jetzt z.B. so aufrufe</p>
<pre><code class="language-cpp">player.SetPlayerLevelUp ();
</code></pre>
<p>weiß der Compiler zwar, dass SetPlayerLevel (...) eine Methode von der Klasse PLAYER ist, allerdings eben nicht, dass auch GetPlayerLevel () eben eine solche ist. Da ist dann auch das Problem. Ich habe zwar selbst die unrealistischten Lösungsansätze versucht, aber es hilft nichts. Also z.B.</p>
<pre><code class="language-cpp">#define SetPlayerLevelUp()            SetPlayerLevel(PLAYER::GetPlayerLevel()+1)

//oder

#define SetPlayerLevelUp()            SetPlayerLevel(PLAYER-&gt;GetPlayerLevel()+1)

//oder

#define SetPlayerLevelUp()            SetPlayerLevel(PLAYER.GetPlayerLevel()+1)

//oder

#define SetPlayerLevelUp(x)            x.SetPlayerLevel(x.GetPlayerLevel()+1)
</code></pre>
<p>die letzte Möglichkeit funktioniert zwar, allerdings wollte ich sowas umgehen (Übergabe von Parametern etc.)<br />
Jetzt meine Frage. Kann ich das überhaupt mit Makros lösen, wenn ja wie, oder muss ich dann dazu doch noch eine Methode schreiben (wer auch nicht der Weltuntergang aber eher 3. Wahl)...</p>
<p>Danke im voraus, Fake oder Echt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461002</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Fri, 22 Feb 2008 14:45:29 GMT</pubDate></item><item><title><![CDATA[Reply to [Makros] Definitionsprobleme beim Benutzen von Methoden on Fri, 22 Feb 2008 15:00:49 GMT]]></title><description><![CDATA[<p>Solange es nicht irgend ein Makro gibt das genau das tut das ich nicht kenne: Nein.</p>
<p>Ist ja stumpfes Suchen/Ersetzen in dem Fall und daher wirst du da auch nichts machen können (außer eben mit Parametern zu arbeiten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461012</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 22 Feb 2008 15:00:49 GMT</pubDate></item><item><title><![CDATA[Reply to [Makros] Definitionsprobleme beim Benutzen von Methoden on Fri, 22 Feb 2008 15:03:48 GMT]]></title><description><![CDATA[<p>Ja hatt ich auch schon befürchtet <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="😃"
    /><br />
Einen Versuch hatte ich noch vergessen, der aber absolut daneben ging:</p>
<pre><code class="language-cpp">#define x.SetPlayerLevelUp()            x.SetPlayerLevel(x.GetPlayerLevel()+1)
</code></pre>
<p>Naja die Not macht eben erfinderisch...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461017</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Fri, 22 Feb 2008 15:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to [Makros] Definitionsprobleme beim Benutzen von Methoden on Fri, 22 Feb 2008 15:25:31 GMT]]></title><description><![CDATA[<p>Komplett auf Makros zu verzichten wäre hier wohl der bessere Weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461040</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 22 Feb 2008 15:25:31 GMT</pubDate></item></channel></rss>