<?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[Objekte mit Array erzuegen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich soll in einer Aufgabe 10 Objekte der Klasse Kiste mit einem Array erzeugen. Es sollte die MÖglichkeit bestehen, bis zu 100 Kisten zur Laufzeit anzulegen.<br />
Initialisierung der Variablen soll über den Konstruktor erfolgen.</p>
<p>Meine Frage:</p>
<p>Wie bekomme ich das hin?</p>
<p>Wenn ich z.B. Kiste meineKisten[100] schreibe, dann kommt a) eine Fehlermeldung, da ich den Standardkonstruktor überschrieben habe und b) werden dann ja hier gleich 100 Objekte erzeugt?</p>
<p>Ich kenne mich da nur von Java aus, da ging das so:</p>
<pre><code class="language-java">Kiste meineKisten[100];

meineKisten[0] = new Kiste(&quot;Nummero 1&quot;, 500, 60);
meineKisten[1] = new Kiste(&quot;Nummero 2&quot;, 600, 70);
...
</code></pre>
<p>Zumindest dachte ich dass bei Java das Objekt erst tatsächlich erzeugt wird, wenn der Operator &quot;new&quot; verwendet wird?</p>
<p>Aber new oder so in Verbindung mit C++ hatten wir bis jetzt noch nicht.</p>
<p>Habt ihr eine Ahnung wie das bei C++ funktionieren soll?</p>
<p>Danke!</p>
<p>Viele Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278142/objekte-mit-array-erzuegen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 07:24:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278142.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 30 Nov 2010 22:30:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Tue, 30 Nov 2010 22:41:00 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich soll in einer Aufgabe 10 Objekte der Klasse Kiste mit einem Array erzeugen. Es sollte die MÖglichkeit bestehen, bis zu 100 Kisten zur Laufzeit anzulegen.<br />
Initialisierung der Variablen soll über den Konstruktor erfolgen.</p>
<p>Meine Frage:</p>
<p>Wie bekomme ich das hin?</p>
<p>Wenn ich z.B. Kiste meineKisten[100] schreibe, dann kommt a) eine Fehlermeldung, da ich den Standardkonstruktor überschrieben habe und b) werden dann ja hier gleich 100 Objekte erzeugt?</p>
<p>Ich kenne mich da nur von Java aus, da ging das so:</p>
<pre><code class="language-java">Kiste meineKisten[100];

meineKisten[0] = new Kiste(&quot;Nummero 1&quot;, 500, 60);
meineKisten[1] = new Kiste(&quot;Nummero 2&quot;, 600, 70);
...
</code></pre>
<p>Zumindest dachte ich dass bei Java das Objekt erst tatsächlich erzeugt wird, wenn der Operator &quot;new&quot; verwendet wird?</p>
<p>Aber new oder so in Verbindung mit C++ hatten wir bis jetzt noch nicht.</p>
<p>Habt ihr eine Ahnung wie das bei C++ funktionieren soll?</p>
<p>Danke!</p>
<p>Viele Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988253</guid><dc:creator><![CDATA[Sören20]]></dc:creator><pubDate>Tue, 30 Nov 2010 22:41:00 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Tue, 30 Nov 2010 22:42:15 GMT]]></title><description><![CDATA[<p>Schau dir mal die STL-Container (wie z.B. <code>std::vector</code> ) an. <a href="http://magazin.c-plusplus.net/artikel/Aufbau%20der%20STL%20-%20Teil%201%3A%20Container" rel="nofollow">Hier</a> findest du einen einführenden Artikel, auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> hast du eine vollständige Dokumentation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988258</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 30 Nov 2010 22:42:15 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Tue, 30 Nov 2010 23:02:09 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Danke, ich habs mir durchgeschaut. Das ist alles zu kompliziert. Wir haben bei weitem das noch nicht in der Schule durchgenommen.</p>
<p>In der Aufgabe steht geschrieben:</p>
<p>***Die Verwaltung der Kisten (maximal 100) soll über Felder erfolgen</p>
<p>Erzeugen Sie zunächst 10 Kisten über einen Konstruktor mit Paramterliste.***<br />
Wie würdet ihr das verstehen?</p>
<p>Ich hätte zuerst ein Array erstellt und die ersten 10 Felder gefüllt??</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988267</guid><dc:creator><![CDATA[Sören20]]></dc:creator><pubDate>Tue, 30 Nov 2010 23:02:09 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Tue, 30 Nov 2010 23:14:54 GMT]]></title><description><![CDATA[<p>Du kannst auch in C++ dynamische Arrays mit <code>new[]</code> und <code>delete[]</code> verwenden. Nur ist das noch viel komplizierter als mit <code>std::vector</code> . Um z.B. ein Array zu vergrössern, musst du ein neues Array anfordern, alles kopieren, den alten Speicher freigeben und die Zeiger umhängen. Und nicht zu vergessen die Grösse irgendwo separat abzuspeichern und zu aktualisieren. Während bei <code>std::vector</code> dafür ein Funktionsaufruf reicht, der alles automatisch tut.</p>
<p>Anders siehts natürlich aus, wenn du ein statisches Array mit fixer Grösse nimmst und davon ein paar Elemente leer lässt. Nur müssen dann halt alle Elemente standardkonstruierbar sein. Oder du verwendest wieder Zeiger und <code>new</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988271</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 30 Nov 2010 23:14:54 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Tue, 30 Nov 2010 23:24:53 GMT]]></title><description><![CDATA[<p>Ja, genau das möchte ich auch:</p>
<p>Ein Array mit 100 reservierten Plätzen.</p>
<p>Davon sind nur 10 belegt.</p>
<p>Das Problem ist nur, ich soll keinen Standardkonstruktor verwenden sondern einen eigen erstellten.</p>
<p>Mit</p>
<pre><code class="language-cpp">Kiste meineKisten[100];

meineKisten[0] = new Kiste (&quot;Nummero 1&quot;,500,70);
</code></pre>
<p>klappt das leider nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
<p>Wie gehtn das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988277</guid><dc:creator><![CDATA[Sören20]]></dc:creator><pubDate>Tue, 30 Nov 2010 23:24:53 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Tue, 30 Nov 2010 23:32:19 GMT]]></title><description><![CDATA[<p>Wie gesagt: Indem du Zeiger als Array-Elemente nimmst. Wenn du nicht weisst, worum es sich bei Zeigern handelt, solltest du dich entsprechend einlesen, sonst macht das Ganze wenig Sinn. Als Einstieg empfehle ich <a href="http://magazin.c-plusplus.net/artikel/Pointer%20in%20C%28PlusPlus%29" rel="nofollow">das hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988280</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 30 Nov 2010 23:32:19 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Wed, 01 Dec 2010 06:28:01 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Also ich bin mir sicher das dass mit den Zeigern nicht gefordert ist. Viel zu kompliziert für den jetzigen Stand.</p>
<p>Ich denke vielmehr, dass Defaultwerte hinterlegt werden müssen,</p>
<p>also in der Art</p>
<pre><code class="language-cpp">Kiste meineKisten [100] (&quot; &quot;,999,999);
</code></pre>
<p>Aber so funktioniert das nicht, da bei Arrays anscheinend so nur der Standardkonstruktor aufrufbar ist.</p>
<p>Kann man das irgendwie umändern, sodass man von einem Array aus einen Konstruktor mit Paramterliste aufrufen kann? Es sollen für alle Elemente des Arrays die gleichen Werte gesetzt werden.</p>
<p>Viele Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988314</guid><dc:creator><![CDATA[Sören20]]></dc:creator><pubDate>Wed, 01 Dec 2010 06:28:01 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Wed, 01 Dec 2010 07:10:13 GMT]]></title><description><![CDATA[<p>Dann biete doch einfach einen Standardkonstruktor an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1988321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988321</guid><dc:creator><![CDATA[skfdsdfghh]]></dc:creator><pubDate>Wed, 01 Dec 2010 07:10:13 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Wed, 01 Dec 2010 09:06:11 GMT]]></title><description><![CDATA[<p>Sören20 schrieb:</p>
<blockquote>
<p>...</p>
<p>In der Aufgabe steht geschrieben:</p>
<p>***Die Verwaltung der Kisten (maximal 100) soll über Felder erfolgen</p>
<p>Erzeugen Sie zunächst 10 Kisten über einen Konstruktor mit Paramterliste.***<br />
Wie würdet ihr das verstehen?</p>
<p>Ich hätte zuerst ein Array erstellt und die ersten 10 Felder gefüllt??</p>
<p>Viele Grüße</p>
</blockquote>
<p>Aus der Aufgabenstellung vermute ich Folgendes:</p>
<ol>
<li>
<p>Die Klasse Kiste besitzt keinen Standardkonstruktor, sondern erwartet eine Anzahl von Parametern. Damit können Kisten in Feldern nur dynamisch erzeugt werden.</p>
</li>
<li>
<p>Es gibt maximal 100 Kisten.</p>
</li>
</ol>
<p>Daraus schließe ich, dass die Kisten dynamisch erzeugt und in einem Array abgelegt werden sollen:</p>
<pre><code class="language-cpp">// Anzahl der benutzten Kisten
unsigned int KistenAnzahl;

// Feld zur Verwaltung der Kisten
Kiste* Kisten[100];

void erzeuge_kiste( TypA ParamA, TypB ParamB, TypC ParamC )
{
   if( KistenAnzahl &lt; 100 )
   {
      // neue Kiste erzeugen und im Feld ablegen
      Kisten[KistenAnzahl] = new Kiste( ParamA, ParamB, ParamC );

     // Anzahl der Kisten erhöhen
     KistenAnzahl = KistenAnzahl +1;  
   }
   else
   {
      // Behandlung für den Fall, dass bereits 100 Kisten existieren
   }
}

void loesche_kisten()
{
   // alle erzeugten Kisten löschen
   for( unsigned int i = 0; i &lt; KistenAnzahl; ++i )
   {
      delete Kisten[i];
   }
}

int main()
{
   // globale Zählvariable auf Startwert setzen
   KistenAnzahl = 0;

   // 10 Kisten erzeugen
   for( unsigned int i = 0; i &lt; 10; ++i )
   {
      erzeuge_kiste( A,B,C );
   }

   // Kisten löschen
   loesche_kisten();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1988359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1988359</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 01 Dec 2010 09:06:11 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Mon, 06 Dec 2010 19:54:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>danke für die Antworten!</p>
<p>Ich habe das jetzt so gelöst, dass beim Erzeugen des Arrays Defaultwerte gesetzt werden</p>
<p>Kisten kiste[100] dann werden im Konstruktor einfach Standardwerte gesetzt (z.B. id_Nummer 999)</p>
<p>Noch eine andere Frage:</p>
<p>Wenn ich Objekte mit &quot;new&quot; erzeuge, das Programm ausführe und es ganz normal beende, bleibt dann der Speicherbereich weiterhin reserviert? Mir wurde gesagt, Objekte die mit new erzeugt werden MÜSSEN zerstört werden (Destruktor) Stimmt das??</p>
<p>Vielen Dank!</p>
<p>Viele Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1990707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1990707</guid><dc:creator><![CDATA[Sören20]]></dc:creator><pubDate>Mon, 06 Dec 2010 19:54:34 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Mon, 06 Dec 2010 20:07:42 GMT]]></title><description><![CDATA[<p>Sören20 schrieb:</p>
<blockquote>
<p>Wenn ich Objekte mit &quot;new&quot; erzeuge, das Programm ausführe und es ganz normal beende, bleibt dann der Speicherbereich weiterhin reserviert?</p>
</blockquote>
<p>In dem was du machst: Nein<br />
Aber es ist durchaus möglich, weshalb man darauf achten sollte, dass man alles wieder freigibt. Außerdem fördert es guten Stil. Wie du nämlich bald feststellen wirst, ist es ziemlich nervig, für jeden möglichen Programmverlauf die richtigen deletes passend zu programmieren. Und dann guckt man sich RAII an und stellt fest, dass man das gar nicht muss. Und dann hat man viel über C++ gelernt und kann in Zukunft viel besser mit der Sprache umgehen und die gelernten Dinge auch auf andere Problemstellungen anwenden.</p>
<blockquote>
<p>Mir wurde gesagt, Objekte die mit new erzeugt werden MÜSSEN zerstört werden (Destruktor) Stimmt das??</p>
</blockquote>
<p>Siehe oben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1990712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1990712</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 06 Dec 2010 20:07:42 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Mon, 06 Dec 2010 20:07:56 GMT]]></title><description><![CDATA[<p>Beim Programmende werden Objekte die mit new erzeugt wurden wieder freigegeben. Mache dir das aber nicht zur Gewohnheit, sondern mache es richtig und benutze immer ein delete wenn ein new verwendet wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1990713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1990713</guid><dc:creator><![CDATA[newdelete]]></dc:creator><pubDate>Mon, 06 Dec 2010 20:07:56 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Mon, 06 Dec 2010 21:17:19 GMT]]></title><description><![CDATA[<p>Danke!</p>
<p>Also bedeutet es hier, dass sobald das Programm beendet wird, der Speicher komplett wieder freigegeben wird? <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>Ist das bei Java auch so?</p>
<p>viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1990749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1990749</guid><dc:creator><![CDATA[Sören20]]></dc:creator><pubDate>Mon, 06 Dec 2010 21:17:19 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte mit Array erzuegen on Mon, 06 Dec 2010 21:54:13 GMT]]></title><description><![CDATA[<p>Sören20 schrieb:</p>
<blockquote>
<p>Also bedeutet es hier, dass sobald das Programm beendet wird, der Speicher komplett wieder freigegeben wird? <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>
</blockquote>
<p>Für deine Zwecke: Ja.</p>
<blockquote>
<p>Ist das bei Java auch so?</p>
</blockquote>
<p>Da sowieso.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1990758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1990758</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 06 Dec 2010 21:54:13 GMT</pubDate></item></channel></rss>