<?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[[Pointerschachtelung]Richtig dereferenzieren]]></title><description><![CDATA[<p>Folgendes Programm wird nicht uebersetzt. g++ meint:</p>
<pre><code>dereferencetest.cpp: In function 'int main()':
dereferencetest.cpp:23: error: expected unqualified-id before '(' token
dereferencetest.cpp:23: error: 'bar' was not declared in this scope
</code></pre>
<p>Die relevante Zeile ist markiert.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Foo;
class Bar;

class Foo
{
    public:
    	Bar** bar;
};

class Bar
{
    public:
    	void func() { cout &lt;&lt; &quot;hi&quot; &lt;&lt; endl; }
};

int main()
{
	Foo foo;
	Foo* f = &amp;foo;

        f-&gt;(*bar)-&gt;func(); //Zeile 23
}
</code></pre>
<p>Eigentlich muesste doch alles richtig dereferenziert sein, oder?</p>
<p>thx in advance</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155651/pointerschachtelung-richtig-dereferenzieren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 13:37:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155651.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Aug 2006 12:06:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Pointerschachtelung]Richtig dereferenzieren on Tue, 08 Aug 2006 12:06:46 GMT]]></title><description><![CDATA[<p>Folgendes Programm wird nicht uebersetzt. g++ meint:</p>
<pre><code>dereferencetest.cpp: In function 'int main()':
dereferencetest.cpp:23: error: expected unqualified-id before '(' token
dereferencetest.cpp:23: error: 'bar' was not declared in this scope
</code></pre>
<p>Die relevante Zeile ist markiert.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Foo;
class Bar;

class Foo
{
    public:
    	Bar** bar;
};

class Bar
{
    public:
    	void func() { cout &lt;&lt; &quot;hi&quot; &lt;&lt; endl; }
};

int main()
{
	Foo foo;
	Foo* f = &amp;foo;

        f-&gt;(*bar)-&gt;func(); //Zeile 23
}
</code></pre>
<p>Eigentlich muesste doch alles richtig dereferenziert sein, oder?</p>
<p>thx in advance</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112898</guid><dc:creator><![CDATA[Raptor]]></dc:creator><pubDate>Tue, 08 Aug 2006 12:06:46 GMT</pubDate></item><item><title><![CDATA[Reply to [Pointerschachtelung]Richtig dereferenzieren on Tue, 08 Aug 2006 12:14:16 GMT]]></title><description><![CDATA[<p>Hi!</p>
<pre><code class="language-cpp">( *f-&gt;bar )-&gt;func();
</code></pre>
<p>Und für <em>bar</em> hat du keinen Speicher reserviert...</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112911</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 08 Aug 2006 12:14:16 GMT</pubDate></item><item><title><![CDATA[Reply to [Pointerschachtelung]Richtig dereferenzieren on Tue, 08 Aug 2006 12:30:56 GMT]]></title><description><![CDATA[<p>Danke.</p>
<p>Nach welchem Algortihmus gehe ich denn im Allgemeinen vor, wenn ich nicht-triviale Pointerverschachtelungen dereferenzieren will?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112922</guid><dc:creator><![CDATA[Raptor]]></dc:creator><pubDate>Tue, 08 Aug 2006 12:30:56 GMT</pubDate></item><item><title><![CDATA[Reply to [Pointerschachtelung]Richtig dereferenzieren on Tue, 08 Aug 2006 12:33:05 GMT]]></title><description><![CDATA[<p>Wie welcher Algorithmus? Du musst einfach so lange dereferenzieren bis du beim tatsächlich &quot;gezeigten&quot; Objekts angekommen bist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112929</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 08 Aug 2006 12:33:05 GMT</pubDate></item><item><title><![CDATA[Reply to [Pointerschachtelung]Richtig dereferenzieren on Tue, 08 Aug 2006 12:44:19 GMT]]></title><description><![CDATA[<p>Ja, schon klar, aber du musst ja irgendwie auf</p>
<pre><code class="language-cpp">( *f-&gt;bar )-&gt;func();
</code></pre>
<p>gekommen sein. Und es waere halt ganz gut zu wissen wie.<br />
Es kann ja auch sein, dass mir demnaechst mal eine kompliziertere Pointerverschachtelung unterkommt und dann moechte ich die moeglichst systematisch, sprich: nach einem Algorithmus, aufschluesseln.<br />
Das meine ich mit Algorithmus, naemlich eine allgemeine Regel, wie ich Pointerverschachtelungen entschluessele.</p>
<p>Hoffe, ich habe mich verstaendlich ausgedrueckt <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/1112943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112943</guid><dc:creator><![CDATA[Raptor]]></dc:creator><pubDate>Tue, 08 Aug 2006 12:44:19 GMT</pubDate></item><item><title><![CDATA[Reply to [Pointerschachtelung]Richtig dereferenzieren on Tue, 08 Aug 2006 12:51:00 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Du musst dir klar werden wir der Ausdruck ausgeführt wird. Du kannst kein Objekt derefernzieren das du noch nicht hast...</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112949</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 08 Aug 2006 12:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Pointerschachtelung]Richtig dereferenzieren on Tue, 08 Aug 2006 14:18:15 GMT]]></title><description><![CDATA[<p>Ok, ich glaub ich weiss, was ich gemacht hab.<br />
Die Klammer, die ich um *bar gesetzt hab hat <strong>zwei</strong> Wirkungen!</p>
<ul>
<li>Die erste ist, dass der Ausdruck</li>
</ul>
<pre><code>*bar
</code></pre>
<p>auch tatsaechlich als</p>
<pre><code>*bar
</code></pre>
<p>interpretiert wird und nicht durch eventuelle Operatorvorraenge z.B. zuerst die Funktion aufgerufen wird und so etwas passiert:</p>
<pre><code>*(bar-&gt;func())
</code></pre>
<ul>
<li>Die zweite Wirkung ist, dass das am meisten &quot;in der Mitte&quot; stehende Klammernpaar in einem Ausdruck als Erstes ausgewertet wird. Durch mein gesetztes Klammernpaar wird also die Auswertungsreihenfolge des Ausdrucks geaendert und es wird versucht eine Variable bar im aktuellen Scope zu dereferenzieren, die natuerlich nicht existiert.</li>
</ul>
<p>Da muss ich in Zukunft mal ein bisschen drauf achten, dass so eine Klammer in einem Ausdruck immer zwei Funktionen hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1113049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1113049</guid><dc:creator><![CDATA[Raptor]]></dc:creator><pubDate>Tue, 08 Aug 2006 14:18:15 GMT</pubDate></item></channel></rss>