<?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 Parameter - aber wie?]]></title><description><![CDATA[<p>Ich habe folgenden Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

struct Test
{
 virtual int GetValue() { return iValue; }
 virtual void SetValue(int Value) { iValue = Value; }
 int iValue;
}

void foo(Test* ptr) 
{
  cout &lt;&lt; ptr-&gt;GetValue() &lt;&lt; endl; // &lt;-hier knallts dann (im ptr steht Müll)
 return;
}

int main()
{
  Test* local_ptr = new Test();
  local_ptr-&gt;SetValue(777);
  foo(local_ptr); // &lt;-- erzeugt einen uninitalisierten ptr, warum?
  return 0;
}
</code></pre>
<p>Ich zermarter mir das Gehirn, und iregend etwas mit &quot;Da muss ein Pointer auf Pointer als Parameter hin&quot; schwirrt durch mein Gehirn aber ich komme nich drauf warum!</p>
<p>Grüsse Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/259882/zeiger-als-parameter-aber-wie</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 18:09:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259882.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 28 Jan 2010 18:55:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger als Parameter - aber wie? on Thu, 28 Jan 2010 18:55:49 GMT]]></title><description><![CDATA[<p>Ich habe folgenden Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

struct Test
{
 virtual int GetValue() { return iValue; }
 virtual void SetValue(int Value) { iValue = Value; }
 int iValue;
}

void foo(Test* ptr) 
{
  cout &lt;&lt; ptr-&gt;GetValue() &lt;&lt; endl; // &lt;-hier knallts dann (im ptr steht Müll)
 return;
}

int main()
{
  Test* local_ptr = new Test();
  local_ptr-&gt;SetValue(777);
  foo(local_ptr); // &lt;-- erzeugt einen uninitalisierten ptr, warum?
  return 0;
}
</code></pre>
<p>Ich zermarter mir das Gehirn, und iregend etwas mit &quot;Da muss ein Pointer auf Pointer als Parameter hin&quot; schwirrt durch mein Gehirn aber ich komme nich drauf warum!</p>
<p>Grüsse Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1846618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846618</guid><dc:creator><![CDATA[Uwe1010]]></dc:creator><pubDate>Thu, 28 Jan 2010 18:55:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Parameter - aber wie? on Thu, 28 Jan 2010 19:02:08 GMT]]></title><description><![CDATA[<p>sieht eigtl korrekt aus - welchen compiler nutzt du? hast du wirklich 1:1 das hier compilieren lassen?</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1846622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846622</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 28 Jan 2010 19:02:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Parameter - aber wie? on Thu, 28 Jan 2010 19:08:08 GMT]]></title><description><![CDATA[<p>Ganz 1:1 kann das nicht sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code>g++ main.cpp -o main
main.cpp:4: Fehler: new types may not be defined in a return type
main.cpp:4: Anmerkung: (vielleicht fehlt ein Semikolon hinter der Definition von »Test«)
[ ... ]
</code></pre>
<p>Ansonsten kannst du ja mal testweise die Klammern hinter dem Konstruktoraufruf wegmachen:</p>
<pre><code class="language-cpp">Test* local_ptr = new Test;
</code></pre>
<p>Wobei es das nicht sein sollte...</p>
<p>Entweder obermistiger Compiler oder Fehler beim Abtippen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1846627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846627</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Thu, 28 Jan 2010 19:08:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Parameter - aber wie? on Thu, 28 Jan 2010 19:08:08 GMT]]></title><description><![CDATA[<p>Hinter die struct Deklaration kommt ein Semikolon.</p>
<p>lg, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1846626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846626</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Thu, 28 Jan 2010 19:08:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Parameter - aber wie? on Thu, 28 Jan 2010 21:10:36 GMT]]></title><description><![CDATA[<p>Ok, ok, steinigt mich... ich habe tatsächlich ein Komma vergessen, aber das war ja auch nur zum Beispiel (und vor allem ungetestet) gewesen da der eigentliche Source um längen komplizierter ist, ich wollte es halt auf das wesentliche reduzieren und kein lauffähiges Demo des Fehlers produzieren. <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>Ok, hier jetzt mal was komplizierters und was näher am Problem liegt (nicht getestet):</p>
<pre><code class="language-cpp">struct IApplication
{
 //viele pure virtual Funktionen
}; //&lt;-- und jetzt auch mit Komma ;)

class AppInterface : public IApplication
{
  //implementierung der pure virtual Funktionen
};

struct ITool
{
  //viele pure virtual Funktionen
};

class Tool
{
private:
  IApplication* mp_Application;
public:
  Tool(IApplication* Application) 
   :mp_Application(Application)  // &lt;-- hier kommt dann nur Müll an, ungültiger Zeiger

  //implementierung der pure virtual Funktionen
};

class Plugin
{
private:
  IApplication* mp_Application;
  ITool* mp_Tool;
public:
  Plugin(IApplication* Application) 
     :mp_Application( Application )
     {
        mp_Tool = new Tool(mp_Application); 
     }
};

int main()
{
   AppInterface Application;
   Plugin* plug = new Plugin(&amp;Application);

   return 0;
}
</code></pre>
<p>Der Compiler ist (VS2009-32Bit) Ver 15.00.xxxx 80x86, Grüße Uwe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1846713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846713</guid><dc:creator><![CDATA[Uwe1010]]></dc:creator><pubDate>Thu, 28 Jan 2010 21:10:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Parameter - aber wie? on Thu, 28 Jan 2010 22:00:23 GMT]]></title><description><![CDATA[<p>Müsli essen, ich sag nur Müsli essen!</p>
<p>Ich habe den Fehler gefunden, es ist zum Haare raufen, der Fehler lag hier:</p>
<pre><code class="language-cpp">// Klasse stellt grundlegende Funktionsimplementierung von ITool zur Verfügung
class ToolAdapter : public ITool
{
protected:
  IApplication* mp_Application;
public: 
  ToolAdapter(IApplication* Application) 
    :mp_Application(Application) {}
  // Funktionen 
};

class Tool : public ToolAdapter
{
public:
    Tool(IApplication* Application) :
    ToolAdapter(mp_Application) {}  //&lt;-- Und das haut natürlich niemals hin!
                                    // der eigentliche Konstruktor ist natürlich 
                                    // bei weitem umfangreicher als dieses Beispiel
};
</code></pre>
<p>Mann ich sage euch, manchmal da....</p>
<p>Grüße von Uwe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1846751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846751</guid><dc:creator><![CDATA[Uwe1010]]></dc:creator><pubDate>Thu, 28 Jan 2010 22:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger als Parameter - aber wie? on Thu, 28 Jan 2010 22:35:37 GMT]]></title><description><![CDATA[<p>gz <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";D"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1846772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1846772</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 28 Jan 2010 22:35:37 GMT</pubDate></item></channel></rss>