<?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[Zugriff auf Array aus Klassenpointern]]></title><description><![CDATA[<p>Ich lerne immer noch C++ und bin mal wieder auf eine Unklarheit gestoßen. Hier der Code:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class CAusnahme1{
public:
	static int iCounter;
	CAusnahme1()
	{
		iCounter ++;
		cout &lt;&lt; &quot;Erstelle Klasse Ausnahme1!&quot; &lt;&lt; endl;
	}
	~CAusnahme1() {
		cout &lt;&lt; &quot;Zerstöre Klasse Ausnahme1!&quot; &lt;&lt; endl;
	}
};

int CAusnahme1::iCounter = 0;

class CAusnahme2{};
class CAusnahme3{};
class CAusnahmeX{};

int main()
{
	CAusnahme1* pC1[3]; // Array aus CAusnahme1-Pointern
	CAusnahme1 pC2[] = {CAusnahme1(), CAusnahme1(), CAusnahme1()};  // Array aus CAusnahme1-Variablen

	for (int i = 0; i &lt; 3; i++)
	{
		pC1[i] = &amp;pC2[i];
	}
	for (int i = 0; i &lt; 3; i++)
	{
		cout &lt;&lt; pC1[i] &lt;&lt; endl;
		cout &lt;&lt; &amp;pC2[i] &lt;&lt; endl;
		cout &lt;&lt; pC1[i]-&gt;iCounter &lt;&lt; endl;
	}

	return 0;
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>0xbf87bdad
0xbf87bdad
3
0xbf87bdae
0xbf87bdae
3
0xbf87bdaf
0xbf87bdaf
3
Zerstöre Klasse Ausnahme1!
Zerstöre Klasse Ausnahme1!
Zerstöre Klasse Ausnahme1!
</code></pre>
<p>Jetzt meine Frage:<br />
Warum funktioniert:</p>
<pre><code>cout &lt;&lt; pC1[i]-&gt;iCounter &lt;&lt; endl;
</code></pre>
<p>???</p>
<p>Warum muss beim Zugriff auf pC1[0]-&gt;iCounter z.B. nicht der Indirektionsoperator verwendet werden, etwas so:<br />
*(pC1[0])-&gt;iCounter</p>
<p>In pC1[0] ist doch ein Pointer auf ein Objekt der Klasse CAusnahme1... Da müsste ich doch normalerweise dereferenzieren, um auf den Inhalt zuzugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285031/zugriff-auf-array-aus-klassenpointern</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 17:00:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285031.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Apr 2011 08:36:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf Array aus Klassenpointern on Wed, 13 Apr 2011 08:36:12 GMT]]></title><description><![CDATA[<p>Ich lerne immer noch C++ und bin mal wieder auf eine Unklarheit gestoßen. Hier der Code:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class CAusnahme1{
public:
	static int iCounter;
	CAusnahme1()
	{
		iCounter ++;
		cout &lt;&lt; &quot;Erstelle Klasse Ausnahme1!&quot; &lt;&lt; endl;
	}
	~CAusnahme1() {
		cout &lt;&lt; &quot;Zerstöre Klasse Ausnahme1!&quot; &lt;&lt; endl;
	}
};

int CAusnahme1::iCounter = 0;

class CAusnahme2{};
class CAusnahme3{};
class CAusnahmeX{};

int main()
{
	CAusnahme1* pC1[3]; // Array aus CAusnahme1-Pointern
	CAusnahme1 pC2[] = {CAusnahme1(), CAusnahme1(), CAusnahme1()};  // Array aus CAusnahme1-Variablen

	for (int i = 0; i &lt; 3; i++)
	{
		pC1[i] = &amp;pC2[i];
	}
	for (int i = 0; i &lt; 3; i++)
	{
		cout &lt;&lt; pC1[i] &lt;&lt; endl;
		cout &lt;&lt; &amp;pC2[i] &lt;&lt; endl;
		cout &lt;&lt; pC1[i]-&gt;iCounter &lt;&lt; endl;
	}

	return 0;
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>0xbf87bdad
0xbf87bdad
3
0xbf87bdae
0xbf87bdae
3
0xbf87bdaf
0xbf87bdaf
3
Zerstöre Klasse Ausnahme1!
Zerstöre Klasse Ausnahme1!
Zerstöre Klasse Ausnahme1!
</code></pre>
<p>Jetzt meine Frage:<br />
Warum funktioniert:</p>
<pre><code>cout &lt;&lt; pC1[i]-&gt;iCounter &lt;&lt; endl;
</code></pre>
<p>???</p>
<p>Warum muss beim Zugriff auf pC1[0]-&gt;iCounter z.B. nicht der Indirektionsoperator verwendet werden, etwas so:<br />
*(pC1[0])-&gt;iCounter</p>
<p>In pC1[0] ist doch ein Pointer auf ein Objekt der Klasse CAusnahme1... Da müsste ich doch normalerweise dereferenzieren, um auf den Inhalt zuzugreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048504</guid><dc:creator><![CDATA[acelab]]></dc:creator><pubDate>Wed, 13 Apr 2011 08:36:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Array aus Klassenpointern on Wed, 13 Apr 2011 08:47:30 GMT]]></title><description><![CDATA[<p>acelab schrieb:</p>
<blockquote>
<p>In pC1[0] ist doch ein Pointer auf ein Objekt der Klasse CAusnahme1... Da müsste ich doch normalerweise dereferenzieren, um auf den Inhalt zuzugreifen.</p>
</blockquote>
<p>Der .-Operator greift auf den Inhalt zu. Der -&gt;-Operator dereferenziert und greift dann auf den Inhalt zu.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">struct Foo
{
  int Bar;
};
Foo* Baz = new Foo;
Baz-&gt;Bar = 5;
(*Baz).Bar = 5;
delete Baz;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2048507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048507</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Wed, 13 Apr 2011 08:47:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Array aus Klassenpointern on Wed, 13 Apr 2011 09:44:10 GMT]]></title><description><![CDATA[<p>Wie schon erklärt wurde dereferenziert der -&gt;Operator den Pointer und greift dann auf deine Variable zu. Ein Äquivalenter Code wäre</p>
<pre><code class="language-cpp">(*ptr).myVariable
</code></pre>
<p>jedoch benutzt man in C++ überlicherweise den -&gt;Operator, da er ja genau das macht und übersichtlicher ist.</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048565</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Wed, 13 Apr 2011 09:44:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Array aus Klassenpointern on Wed, 13 Apr 2011 09:57:34 GMT]]></title><description><![CDATA[<p>fr33g schrieb:</p>
<blockquote>
<p>Wie schon erklärt wurde dereferenziert der -&gt;Operator den Pointer und greift dann auf deine Variable zu. Ein Äquivalenter Code wäre</p>
<pre><code class="language-cpp">(*ptr).myVariable
</code></pre>
<p>jedoch benutzt man in C++ überlicherweise den -&gt;Operator, da er ja genau das macht und übersichtlicher ist.</p>
<p>Lg freeG</p>
</blockquote>
<p>Dann funktioniert in meinem Fall:</p>
<pre><code class="language-cpp">cout &lt;&lt; (*pC1[i]).iCounter &lt;&lt; endl;
</code></pre>
<p>, wie ich soeben gelernt habe.</p>
<p>Und schon wieder ist ein Licht aufgegangen. Danke an Alle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048571</guid><dc:creator><![CDATA[acelab]]></dc:creator><pubDate>Wed, 13 Apr 2011 09:57:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf Array aus Klassenpointern on Wed, 13 Apr 2011 11:00:00 GMT]]></title><description><![CDATA[<p>Ja genau, wobei ich auch eher zum Pfeiloperator tendieren würde.</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048597</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Wed, 13 Apr 2011 11:00:00 GMT</pubDate></item></channel></rss>