<?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[Zeiger als Funktionsparameter]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem mit einer Funktion, die per Zeiger Membervariablen einer Klasse übernehmen soll. Jedes Mal wenn ich aber die Funktion aufrufen möchte meint der Compiler, dass die Variablen nicht deklariert seien.<br />
Wo liegt also mein Problem?</p>
<p>Genauer:</p>
<p>Ich habe eine Klasse (in der Datei hro.cpp) in der ich verschiedene Variablen deklariere und später per Konstruktor initialisiere. In dieser Klasse ist auch die Funktion make_hero, welche einige der Membervariablen benötigt.<br />
In dieser make_hero-Funktion werden diese Variablen verändert, weshalb ich ja einen Zeiger auf diese brauche.<br />
=&gt; Ich gebe als Parameter für make_hero die Zeiger auf die Membervariablen an:</p>
<pre><code class="language-cpp">void make_hero (int *m_strenght, int *m_speed, ...)
</code></pre>
<p>Beim Aufrufen dieser Funktion gebe ich als Parameter dann die Adresse der Variablen an (nachdem ich eine Instanz der Klasse namens player angelegt habe).</p>
<pre><code class="language-cpp">player.make_hero (&amp;m_strenght, &amp;m_speed, ...)
</code></pre>
<p>Was mache ich falsch und wären hier Referenzen sinnvoller?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/131655/zeiger-als-funktionsparameter</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 16:13:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/131655.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jan 2006 22:33:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger als Funktionsparameter on Wed, 04 Jan 2006 22:33:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Problem mit einer Funktion, die per Zeiger Membervariablen einer Klasse übernehmen soll. Jedes Mal wenn ich aber die Funktion aufrufen möchte meint der Compiler, dass die Variablen nicht deklariert seien.<br />
Wo liegt also mein Problem?</p>
<p>Genauer:</p>
<p>Ich habe eine Klasse (in der Datei hro.cpp) in der ich verschiedene Variablen deklariere und später per Konstruktor initialisiere. In dieser Klasse ist auch die Funktion make_hero, welche einige der Membervariablen benötigt.<br />
In dieser make_hero-Funktion werden diese Variablen verändert, weshalb ich ja einen Zeiger auf diese brauche.<br />
=&gt; Ich gebe als Parameter für make_hero die Zeiger auf die Membervariablen an:</p>
<pre><code class="language-cpp">void make_hero (int *m_strenght, int *m_speed, ...)
</code></pre>
<p>Beim Aufrufen dieser Funktion gebe ich als Parameter dann die Adresse der Variablen an (nachdem ich eine Instanz der Klasse namens player angelegt habe).</p>
<pre><code class="language-cpp">player.make_hero (&amp;m_strenght, &amp;m_speed, ...)
</code></pre>
<p>Was mache ich falsch und wären hier Referenzen sinnvoller?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957257</guid><dc:creator><![CDATA[spacegaier]]></dc:creator><pubDate>Wed, 04 Jan 2006 22:33:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Funktionsparameter on Wed, 04 Jan 2006 22:42:46 GMT]]></title><description><![CDATA[<p>spacegaier schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>ich habe ein Problem mit einer Funktion, die per Zeiger Membervariablen einer Klasse übernehmen soll. Jedes Mal wenn ich aber die Funktion aufrufen möchte meint der Compiler, dass die Variablen nicht deklariert seien.<br />
Wo liegt also mein Problem?</p>
<p>Genauer:</p>
<p>Ich habe eine Klasse (in der Datei hro.cpp) in der ich verschiedene Variablen deklariere und später per Konstruktor initialisiere. In dieser Klasse ist auch die Funktion make_hero, welche einige der Membervariablen benötigt.<br />
In dieser make_hero-Funktion werden diese Variablen verändert, weshalb ich ja einen Zeiger auf diese brauche.<br />
=&gt; Ich gebe als Parameter für make_hero die Zeiger auf die Membervariablen an:</p>
<pre><code class="language-cpp">void make_hero (int *m_strenght, int *m_speed, ...)
</code></pre>
<p>Beim Aufrufen dieser Funktion gebe ich als Parameter dann die Adresse der Variablen an (nachdem ich eine Instanz der Klasse namens player angelegt habe).</p>
<pre><code class="language-cpp">player.make_hero (&amp;m_strenght, &amp;m_speed, ...)
</code></pre>
</blockquote>
<p>Sind m_strength und m_speed zufällig Member-Variablen der Klasse player und dort &quot;private&quot;?<br />
Falls nicht, poste mal einen Code-Snippet, in dem du den Fehler reproduzieren kannst :).</p>
<blockquote>
<p>Was mache ich falsch und wären hier Referenzen sinnvoller?</p>
</blockquote>
<p>Kommt drauf an.<br />
Pro Referenz:<br />
&quot;Einfachere&quot; Handhabung, (* und -&gt; entfallen).<br />
Sicherer, da sie nicht nicht-initialisiert sein kann.</p>
<p>Kontra Referenz:<br />
Kann nicht 0 sein.<br />
Kann nicht &quot;umgebogen&quot; werden, d.h. kann während ihrer gesamten Lebensdauer nur ein und das selbe Objekt referenzieren.</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957261</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Wed, 04 Jan 2006 22:42:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Funktionsparameter on Wed, 04 Jan 2006 22:50:36 GMT]]></title><description><![CDATA[<p>m_strenght und m_speed sind neben weiteren Membervariablen in der Klasse hero (nicht player; player war nur der Name der Instanz) deklariert und sind alle public.</p>
<p>Ist Code-Snippet = betreffendes Stück des Codes (Bin neu in einem Forum)</p>
<p>Danke für die Antwort <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>
]]></description><link>https://www.c-plusplus.net/forum/post/957266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957266</guid><dc:creator><![CDATA[spacegaier]]></dc:creator><pubDate>Wed, 04 Jan 2006 22:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Funktionsparameter on Wed, 04 Jan 2006 23:00:39 GMT]]></title><description><![CDATA[<p>spacegaier schrieb:</p>
<blockquote>
<p>m_strenght und m_speed sind neben weiteren Membervariablen in der Klasse hero (nicht player; player war nur der Name der Instanz) deklariert und sind alle public.</p>
</blockquote>
<p>Dann verstehe ich nicht, warum du Membervariablen an eine Memberfunktion per Zeiger übergeben musst.</p>
<p>Soweit ich das jetzt verstanden habe, sieht deine Klasse ungefähr so aus:</p>
<pre><code class="language-cpp">struct hero
{
      int m_strength, m_speed; // etc.

      // ...
      void make_hero(int *m_strength, int *m_speed, ...)
      {
          ...
      }
      // ...
};
</code></pre>
<p>Was ist hierbei der Sinn? Du musst m_strength, etc. nicht an make_hero übergeben, da make_hero selbst auf m_strength, etc. bereits Zugriff hat...</p>
<p>Btw.: Falls die Klasse wirklich so aussieht, könntest du die Zeile</p>
<pre><code class="language-cpp">player.make_hero (&amp;m_strenght, &amp;m_speed, ...)
</code></pre>
<p>z.B. durch</p>
<pre><code class="language-cpp">player.make_hero (&amp;player.m_strenght, &amp;player.m_speed, ...)
</code></pre>
<p>ersetzen um dem Compile-Fehler vorzubeugen... Allerdings rate ich dir dringenst davon ab und empfehle: Schau dir das allgemeine Konzept der Klassen noch einmal an :).</p>
<blockquote>
<p>Ist Code-Snippet = betreffendes Stück des Codes (Bin neu in einem Forum)</p>
</blockquote>
<p>Genau das :).</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/957274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/957274</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Wed, 04 Jan 2006 23:00:39 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Funktionsparameter on Thu, 05 Jan 2006 21:10:24 GMT]]></title><description><![CDATA[<p>Danke Ciapi,</p>
<p>hast vollkommen recht. Es ist völlig sinnfrei der Funktion die Variablen als Parameter zu übergeben. Mir kam es heute morgen auch.</p>
<p>Danke für die Bestätigung meiner Vermutung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/958251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/958251</guid><dc:creator><![CDATA[spacegaier]]></dc:creator><pubDate>Thu, 05 Jan 2006 21:10:24 GMT</pubDate></item></channel></rss>