<?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[dynamische Klassenarrays]]></title><description><![CDATA[<p>Grüßt euch,</p>
<p>bin noch relativ neu in den Welten des C++, hoffe deshalb ihr könnt mir weiterhelfen.</p>
<p>Ich möchte in einer Klasse CWelt mehrere Objekte der Klasse CMensch dynamisch anlegen. Dazu nutze ich eine kleine for-Schleife, in welcher ich die Objekte initialisiere.</p>
<p>Allerdings hab ich das Problem, dass ich auf die übergebenen Werte (Name, Größer, Alter) in der Klasse CMensch nicht zugreifen kann, obwohl ich sie im Konstruktor der Klasse CMensch korrekt übergebe.</p>
<p>Kann mir jemand weiterhelfen?</p>
<p>Grüße,<br />
klanc</p>
<pre><code class="language-cpp">CMensch* PointerMensch;
PointerMensch = new CMensch[anzahl];

for(int i=0;i&lt;anzahl; i++){

PointerMensch[i] = Mensch(Name, Größe, Alter);

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/187898/dynamische-klassenarrays</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 21:59:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187898.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Jul 2007 11:16:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 11:16:09 GMT]]></title><description><![CDATA[<p>Grüßt euch,</p>
<p>bin noch relativ neu in den Welten des C++, hoffe deshalb ihr könnt mir weiterhelfen.</p>
<p>Ich möchte in einer Klasse CWelt mehrere Objekte der Klasse CMensch dynamisch anlegen. Dazu nutze ich eine kleine for-Schleife, in welcher ich die Objekte initialisiere.</p>
<p>Allerdings hab ich das Problem, dass ich auf die übergebenen Werte (Name, Größer, Alter) in der Klasse CMensch nicht zugreifen kann, obwohl ich sie im Konstruktor der Klasse CMensch korrekt übergebe.</p>
<p>Kann mir jemand weiterhelfen?</p>
<p>Grüße,<br />
klanc</p>
<pre><code class="language-cpp">CMensch* PointerMensch;
PointerMensch = new CMensch[anzahl];

for(int i=0;i&lt;anzahl; i++){

PointerMensch[i] = Mensch(Name, Größe, Alter);

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1332170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332170</guid><dc:creator><![CDATA[klanc]]></dc:creator><pubDate>Wed, 25 Jul 2007 11:16:09 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 11:21:44 GMT]]></title><description><![CDATA[<p>Also die Zeile</p>
<pre><code class="language-cpp">PointerMensch[i] = Mensch(Name, Größe, Alter);
</code></pre>
<p>sieht nicht sehr korrekt aus. Sollte das nicht lieber</p>
<pre><code class="language-cpp">PointerMensch[i] = CMensch(Name, Groesse, Alter);
</code></pre>
<p>heissen?</p>
<p>Wie sieht denn Deine Klasse CMensch aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332178</guid><dc:creator><![CDATA[mbu]]></dc:creator><pubDate>Wed, 25 Jul 2007 11:21:44 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 11:22:02 GMT]]></title><description><![CDATA[<p>Was meinst du mit &quot;nicht zugreifen kann&quot;? Hat der Ctor die übergebenen Parameter überhaupt in Membervariablen gespeichert? Und was steht nach der Schleife in diesen Membervariablen drin?</p>
<p>PS: Die Speicherverwaltung solltest du zurückstellen, bis du die Grundlagen verstanden hast. Nimm lieber einen vector&lt;CMensch&gt; anstelle deines Pointers, der ist einfacher zu handhaben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332180</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 25 Jul 2007 11:22:02 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 11:24:20 GMT]]></title><description><![CDATA[<p>Du kommst nicht zufällig von Java? <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>Nach dem Aufruf von <em>PointerMensch = new CMensch[anzahl];</em> gibt diese Objekte schon, der Konstruktor wird hier schon aufgerufen. In der for-Schleife könntest du dann entsprechende Funktionen von den Objekten aufrufen, um den Namen, das Alter und die Größe zu setzen.</p>
<p>edit: laaaaaaaaaaaangsam...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332181</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 25 Jul 2007 11:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 11:40:31 GMT]]></title><description><![CDATA[<p>mbu schrieb:</p>
<blockquote>
<p>Also die Zeile</p>
<pre><code class="language-cpp">PointerMensch[i] = Mensch(Name, Größe, Alter);
</code></pre>
<p>sieht nicht sehr korrekt aus. Sollte das nicht lieber</p>
<pre><code class="language-cpp">PointerMensch[i] = CMensch(Name, Groesse, Alter);
</code></pre>
<p>heissen?</p>
</blockquote>
<p>Hast natürlich recht, heißt bei mir auch</p>
<pre><code class="language-cpp">PointerMensch[i] = CMensch(Name, Groesse, Alter);
</code></pre>
<p>Der Konstruktor sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">CMensch::CMensch(char Name, int Groesse, int Alter)
{

	age_person = Alter;
        name_person = Name;
        height_person = Groesse;

}
</code></pre>
<p>Die Variablen age_person, name_person und height_person werden im Header der Klasse CMensch deklariert. Aber wenn ich dann von der Klasse CWelt auf eine Funktion der Klasse CMensch zugreife, sind diese Variablen nicht initialisiert. Als ob das Objekt die Werte vergisst, oder nicht behält. Sollten die Objekte nicht solange auf dem Heap liegen, bis ich sie mit delete wieder zerstöre?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>: hab es auch schon über entsprechende Funktionen: set_alter, set_name und set_groesse versucht, aber da tritt dasselbe Problem auf.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>: Wie kann ich das mit einem vector&lt;CMensch&gt; umsetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332202</guid><dc:creator><![CDATA[klanc]]></dc:creator><pubDate>Wed, 25 Jul 2007 11:40:31 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 11:50:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">vector&lt;CMensch&gt; Menschen;
for(int i=0;i&lt;anzahl;++i)
  Menschen.push_back(CMensch(n,g,a));
</code></pre>
<p>PS: Bist du sicher, daß du mit genau dem Zeiger gearbeitet hast, hinter dem du dein Array versteckt hast? Zeig doch mal den Code im größeren Zusammenhang - inklusive der Versuche, die Objekte wieder auszulesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332221</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 25 Jul 2007 11:50:28 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 11:53:22 GMT]]></title><description><![CDATA[<p>klanc schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>: hab es auch schon über entsprechende Funktionen: set_alter, set_name und set_groesse versucht, aber da tritt dasselbe Problem auf.</p>
</blockquote>
<pre><code class="language-cpp">CMensch* PointerMensch;
PointerMensch = new CMensch[anzahl];

for(int i=0;i&lt;anzahl; i++){
    PointerMensch[i].set_alter( Alter );
    PointerMensch[i].set_name( Name );
    PointerMensch[i].set_groesse( Größe );
}

void CMensch::set_alter( int Alter )
{
    age_person = Alter;
}
</code></pre>
<p>Das funktioniert nicht? Dann stimmt irgendwas aber gewaltig nicht! Und ja, die Objekte sollten eigentlich nix vergessen <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>Die Werte im Konstruktor zu übergeben ist aber sowieso eleganter/besser. Nichtsdestotrotz scheint da irgendwas ja nicht ganz so zu funktionieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332223</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 25 Jul 2007 11:53:22 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 12:10:36 GMT]]></title><description><![CDATA[<p>Name sollte auch kein char sondern ein std::string sein es sei denn alle deine Namen haben nur einen Buchstaben. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1332240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332240</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 25 Jul 2007 12:10:36 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 12:10:36 GMT]]></title><description><![CDATA[<p>Anfangs hab ich zwei Objekte der Klasse CMensch angelegt.</p>
<pre><code class="language-cpp">//Header
CMensch* pMensch1;
CMensch* pMensch2;
</code></pre>
<pre><code class="language-cpp">//CPP

pMensch1 = new CMensch(Wili, 180, 25);
pMensch2 = new CMensch(Anne, 170, 22);

pMensch1-&gt;SetzeGewicht();
...
</code></pre>
<p>Damit hat das auch gut funktioniert. Die Initialisierung der Variablen im Konstruktor und der Zugriff darauf innerhalb der SetzeGewichts-Funktion. Aber mit dem Klassenarray funzt das nicht so, weiß auch nicht wieso.<br />
Ausgelesen hab ich die Variablen im Debug-Modus. Da waren die Variablen nicht belegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332241</guid><dc:creator><![CDATA[klanc]]></dc:creator><pubDate>Wed, 25 Jul 2007 12:10:36 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 12:11:53 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Name sollte auch kein char sondern ein std::string sein es sei denn alle deine Namen haben nur einen Buchstaben. <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>
</blockquote>
<p>Hab ich wieder falsch angegeben, sind in Wirklichkeit auch Vom Typ string. Sorry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332244</guid><dc:creator><![CDATA[klanc]]></dc:creator><pubDate>Wed, 25 Jul 2007 12:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 12:12:24 GMT]]></title><description><![CDATA[<p>Zeig doch mal deine Klassendeklaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332246</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 25 Jul 2007 12:12:24 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 12:18:11 GMT]]></title><description><![CDATA[<p>klanc schrieb:</p>
<blockquote>
<p>Anfangs hab ich zwei Objekte der Klasse CMensch angelegt....</p>
</blockquote>
<p>Mag sein ... aber <em>warum</em> ? <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>
<p>Geht doch viel einfacher (sicherer, stabiler, ...) mit</p>
<pre><code class="language-cpp">//CPP

CMensch Mensch1(&quot;Wili&quot;, 180, 25);
CMensch Mensch2(&quot;Anne&quot;, 170, 22);

Mensch1.SetzeGewicht(5);
...
</code></pre>
<p>...<br />
und wenn man einen Container mit denen haben will, ist der vector-Vorschlag von CStoll immer noch der bessere:</p>
<p>CStoll schrieb:</p>
<blockquote>
<pre><code class="language-cpp">vector&lt;CMensch&gt; Menschen;
for(int i=0;i&lt;anzahl;++i)
  Menschen.push_back(CMensch(n,g,a));
</code></pre>
</blockquote>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332248</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Jul 2007 12:18:11 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 12:31:57 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Zeig doch mal deine Klassendeklaration.</p>
</blockquote>
<pre><code class="language-cpp">class CMensch

{
public:
	CMensch(void);

	CMensch(string Name, int Groesse, int Alter);

public:
	~CMensch(void);

private:
	int age_person, height_person, name_person;

public:

	void SetzeGewicht();
}
</code></pre>
<p>Dies ist die Deklaration der Klasse CMensch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332262</guid><dc:creator><![CDATA[klanc]]></dc:creator><pubDate>Wed, 25 Jul 2007 12:31:57 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 12:41:01 GMT]]></title><description><![CDATA[<p>klanc schrieb:</p>
<blockquote>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Zeig doch mal deine Klassendeklaration.</p>
</blockquote>
<pre><code class="language-cpp">class CMensch
	
{
public:
	CMensch(void);
	
	CMensch(string Name, int Groesse, int Alter);

public:
	~CMensch(void);

private:
	int age_person, height_person, name_person;
	
	

public:
	
	void SetzeGewicht();
}
</code></pre>
<p>Dies ist die Deklaration der Klasse CMensch.</p>
</blockquote>
<p>Wofür brauchst Du denn den Destruktor ?<br />
Ach ja: Und möchtest Du Gewicht auch auf irgendetwas setzen ? Der Funktion täte ein Parameter vielleicht ganz gut.</p>
<p>Gruß,</p>
<p>Simon2.</p>
<p>P.S.: Die mehreren public's da drin lassen die Java-Herkunft noch ein wenig wahrscheinlicher wirken ... (zusammen mit den überflüssigen news). <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1332268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332268</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Jul 2007 12:41:01 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 12:40:03 GMT]]></title><description><![CDATA[<p>Du brauchst in C++ recht selten <strong>new</strong>, anders als in Java. Alles mit new erzeugte muss Du auch wieder mit delete freigeben. Arbeitest Du hingegen ohne new, so wird der Speicher auf dem heap selbstständig angelegt und auch wieder gelöscht. Lässt sich zwar nicht immer umgehen, aber ich habe new so gut wie noch nie gebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332271</guid><dc:creator><![CDATA[plizer]]></dc:creator><pubDate>Wed, 25 Jul 2007 12:40:03 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 12:42:07 GMT]]></title><description><![CDATA[<p>Wie schon gesagt sollte name_person ein string sein. Sonst macht die ganze Klasse keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332273</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 25 Jul 2007 12:42:07 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 13:26:59 GMT]]></title><description><![CDATA[<p>Danke euch allen. Habs den fehler gefunden, der lag woanders....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332304</guid><dc:creator><![CDATA[klanc]]></dc:creator><pubDate>Wed, 25 Jul 2007 13:26:59 GMT</pubDate></item><item><title><![CDATA[Reply to dynamische Klassenarrays on Wed, 25 Jul 2007 13:38:02 GMT]]></title><description><![CDATA[<p>klanc schrieb:</p>
<blockquote>
<p>Danke euch allen. Habs den fehler gefunden, der lag woanders....</p>
</blockquote>
<p>Dann zeig doch mal das Ergebnis (interessiert mich ja jetzt doch) .. und am Besten noch, wo der Fehler lag (man lernt nie aus).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1332313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1332313</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 25 Jul 2007 13:38:02 GMT</pubDate></item></channel></rss>