<?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[Auf dem Heap erzeugte Klasse in Funktion aufrufen]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich bin gerade dabei von einem Basic-Dialekt umzusteigen auf C++. Hierbei stehe ich vor einem Problem. Ich versuche jetzt schon länger hinter die Lösung zu kommen, ich schaffe es aber nicht.</p>
<p>Folgendes Problem:</p>
<pre><code class="language-cpp">// Header

// Ich erzeuge meine Klasse
class CKlasse
{
private:
	int MeineVariable;

public:	
	float Memberfunktion ();
};

// Funktionsprototyp
void MeineFunktion (int Zahl, CKlasse *pInstanz);
</code></pre>
<p>Hier erstelle ich den Header mit einer Klasse.</p>
<pre><code class="language-cpp">// main Funktion

int main()
{
	// Variablen
	int Zahl = 3;

	// Klasse wird auf dem Heap erzeugt
	CKlasse *pInstanz = NULL;
	pInstanz = new CKlasse[Zahl]; // &lt;-- nämlich in dem Fall 3x

	MeineFunktion (Zahl, pInstanz); // damit rufe ich meine Funktion auf...
}
</code></pre>
<p>3 Instanzen der Klasse werden auf dem Heap erzeugt, Funktion wird aufgerufen.</p>
<pre><code class="language-cpp">void MeineFunktion (int Zahl, CKlasse *pInstanz)
{
	for (int i = 0; i &lt; Zahl; i++)
	{
		pInstanz-&gt;Memberfunktion (); // ... die dann auf die Memberfunktion zugreifen soll
		// mit dieser Funktion greife ich aber nur auf die erste Instanz zu - wie komme ich zu Instanz 2 &amp; 3?
		// pInstanz[i]-&gt; Memberfunktion (); wäre mein Vorschlag gewesen - klappt nicht
	}
}

float CKlasse::Memberfunktion ()
{
	// Aktionen
	return 0;
}
</code></pre>
<p>... in meiner Funktion soll die Memberfunktion mit allen Instanzen aufgerufen werden - klappt aber nicht. Ich komme hier einfach nicht weiter.</p>
<p>Ich hoffe ihr versteht was ich von euch möchte <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="🙂"
    /><br />
Danke jedenfalls,</p>
<p>mlg<br />
toetoe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284029/auf-dem-heap-erzeugte-klasse-in-funktion-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 09:24:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284029.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Mar 2011 09:40:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Auf dem Heap erzeugte Klasse in Funktion aufrufen on Thu, 24 Mar 2011 09:40:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich bin gerade dabei von einem Basic-Dialekt umzusteigen auf C++. Hierbei stehe ich vor einem Problem. Ich versuche jetzt schon länger hinter die Lösung zu kommen, ich schaffe es aber nicht.</p>
<p>Folgendes Problem:</p>
<pre><code class="language-cpp">// Header

// Ich erzeuge meine Klasse
class CKlasse
{
private:
	int MeineVariable;

public:	
	float Memberfunktion ();
};

// Funktionsprototyp
void MeineFunktion (int Zahl, CKlasse *pInstanz);
</code></pre>
<p>Hier erstelle ich den Header mit einer Klasse.</p>
<pre><code class="language-cpp">// main Funktion

int main()
{
	// Variablen
	int Zahl = 3;

	// Klasse wird auf dem Heap erzeugt
	CKlasse *pInstanz = NULL;
	pInstanz = new CKlasse[Zahl]; // &lt;-- nämlich in dem Fall 3x

	MeineFunktion (Zahl, pInstanz); // damit rufe ich meine Funktion auf...
}
</code></pre>
<p>3 Instanzen der Klasse werden auf dem Heap erzeugt, Funktion wird aufgerufen.</p>
<pre><code class="language-cpp">void MeineFunktion (int Zahl, CKlasse *pInstanz)
{
	for (int i = 0; i &lt; Zahl; i++)
	{
		pInstanz-&gt;Memberfunktion (); // ... die dann auf die Memberfunktion zugreifen soll
		// mit dieser Funktion greife ich aber nur auf die erste Instanz zu - wie komme ich zu Instanz 2 &amp; 3?
		// pInstanz[i]-&gt; Memberfunktion (); wäre mein Vorschlag gewesen - klappt nicht
	}
}

float CKlasse::Memberfunktion ()
{
	// Aktionen
	return 0;
}
</code></pre>
<p>... in meiner Funktion soll die Memberfunktion mit allen Instanzen aufgerufen werden - klappt aber nicht. Ich komme hier einfach nicht weiter.</p>
<p>Ich hoffe ihr versteht was ich von euch möchte <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="🙂"
    /><br />
Danke jedenfalls,</p>
<p>mlg<br />
toetoe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039257</guid><dc:creator><![CDATA[toetoe]]></dc:creator><pubDate>Thu, 24 Mar 2011 09:40:13 GMT</pubDate></item><item><title><![CDATA[Reply to Auf dem Heap erzeugte Klasse in Funktion aufrufen on Thu, 24 Mar 2011 09:45:44 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">pInstanz[i].Memberfunktion();
</code></pre>
<p>Außerdem: Nicht vergessen, den Speicher wieder freizugeben! Zu jedem new[] gehört ein delete[]. In der Praxis benutzt man dafür natürlich std::vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039260</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 24 Mar 2011 09:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to Auf dem Heap erzeugte Klasse in Funktion aufrufen on Thu, 24 Mar 2011 09:46:22 GMT]]></title><description><![CDATA[<p>pInstanz ist nun nichtmehr nur ein Zeiger auf eine Instanz sondern ein Zeiger auf das erste Objekt in einem Array. Was du willst ist also:</p>
<pre><code class="language-cpp">pInstanz[i].Memberfunktion();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2039261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039261</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 24 Mar 2011 09:46:22 GMT</pubDate></item><item><title><![CDATA[Reply to Auf dem Heap erzeugte Klasse in Funktion aufrufen on Thu, 24 Mar 2011 09:47:16 GMT]]></title><description><![CDATA[<p>pass auf: die hast ein array von deiner klasse, dieses möchtest du an ein funktion geben, stimmt auch so, aber da greifst du nur auf das erste element zu wie du richtig gesagt hast.</p>
<pre><code class="language-cpp">void MeineFunktion (int Zahl, CKlasse *pInstanz)
{
    for (int i = 0; i &lt; Zahl; i++)
    {
        // pInstanz-&gt;Memberfunktion ();  &lt;--- greift nur auf das erste zu
        // pInstanz[i]-&gt; Memberfunktion (); richtig dass es nicht klappt
        // weil du hier quasi ein array von zeigern nutzt
        pInstanz[i].Memberfunktion(); // wäre richtig
    }
}
</code></pre>
<p>die zweite möglichkeit wäre richtig wenn der 2. parameter lauten würde: CKlasse[] *pInstanz (Array von zeigern auf deine Klasse)</p>
<p>Edit: zu spät -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039262</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 24 Mar 2011 09:47:16 GMT</pubDate></item><item><title><![CDATA[Reply to Auf dem Heap erzeugte Klasse in Funktion aufrufen on Thu, 24 Mar 2011 09:49:54 GMT]]></title><description><![CDATA[<p>Vermeide new[]/delete[] zugunsten von std::vector</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039265</guid><dc:creator><![CDATA[stl_gibts_auch_noch]]></dc:creator><pubDate>Thu, 24 Mar 2011 09:49:54 GMT</pubDate></item><item><title><![CDATA[Reply to Auf dem Heap erzeugte Klasse in Funktion aufrufen on Thu, 24 Mar 2011 10:14:59 GMT]]></title><description><![CDATA[<p>Wow, habe nicht mit so vielen schnellen Antworten gerechnet.<br />
Tja, wenn ihr mir fast unisono zu Vektoren ratet, werde ich das wohl in Zukunft anders machen.</p>
<p>Aber so klappt es ja perfekt <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>
<p>Doch noch zum Thema Vektoren. Das Problem mit einem Array oder Vektor wäre gewesen, dass ich in der Klasse unterschiedliche Membervariablen verwende (int, float &amp; bool). Das könnte ich mit einem Array nicht lösen oder?<br />
Und Vektoren wären ja überhaupt nur eindimensional soweit ich weiß.</p>
<p>//Edit: Höchsten, dass ich mehrere Felder erzeuge...</p>
<p>Danke jedenfalls für die schnelle Hilfe <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>
<p>mlg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039289</guid><dc:creator><![CDATA[toetoe]]></dc:creator><pubDate>Thu, 24 Mar 2011 10:14:59 GMT</pubDate></item></channel></rss>