<?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[Array von Instanzen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein kleines (Syntax oder Verständnis???) Problem:<br />
Ich habe eine Klasse A geschrieben, die wiederum (als protected) ein Array von Instanzen einer anderen Klasse B enthält...</p>
<p>Beim erzeugen eines Objekts der Klasse A (z.B. in der main()-Funktion) werden ja dann auch z.B. fünf Instanzen der Klasse B angelegt, d.h. deren Konstruktor wird aufgerufen. Das ist ja ganz OK, solange ich den Standart-Konstruktor verwenden will, wenn ich aber einen mit Parametern verwenden muss, stehe ich vor einem Problem: Wie kann ich die Parameter für die (fünf) Klasse B Instanzen dem Konstruktor von Klasse A mitgeben, sodass dieser sie dann für die Instanzierung der (fünf) B-Objekte innerhalb von Klasse A verwendet????</p>
<p>Vom Prinzip her müsste das ja mit dem vom Prinzip her mit diesem : Operator beim Standartkonstruktor von Klasse A funktionieren, ich krieg es aber einfach nicht gebacken... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>mfg MAV</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128910/array-von-instanzen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 22:51:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128910.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Dec 2005 13:23:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array von Instanzen on Thu, 08 Dec 2005 13:23:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein kleines (Syntax oder Verständnis???) Problem:<br />
Ich habe eine Klasse A geschrieben, die wiederum (als protected) ein Array von Instanzen einer anderen Klasse B enthält...</p>
<p>Beim erzeugen eines Objekts der Klasse A (z.B. in der main()-Funktion) werden ja dann auch z.B. fünf Instanzen der Klasse B angelegt, d.h. deren Konstruktor wird aufgerufen. Das ist ja ganz OK, solange ich den Standart-Konstruktor verwenden will, wenn ich aber einen mit Parametern verwenden muss, stehe ich vor einem Problem: Wie kann ich die Parameter für die (fünf) Klasse B Instanzen dem Konstruktor von Klasse A mitgeben, sodass dieser sie dann für die Instanzierung der (fünf) B-Objekte innerhalb von Klasse A verwendet????</p>
<p>Vom Prinzip her müsste das ja mit dem vom Prinzip her mit diesem : Operator beim Standartkonstruktor von Klasse A funktionieren, ich krieg es aber einfach nicht gebacken... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>mfg MAV</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937305</guid><dc:creator><![CDATA[MAV_today]]></dc:creator><pubDate>Thu, 08 Dec 2005 13:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Thu, 08 Dec 2005 13:58:12 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class A
{
  protected:
    B *_array[3];
  public:
    A(int param1, int param2, int param3)
    {
      array[0] = new B(param1);
      array[1] = new B(param2);
      array[2] = new B(param3);
    }
};
</code></pre>
<p>bzw.</p>
<pre><code class="language-cpp">class A
{
  protected:
    B _array[3];
  public:
    A(int param1, int param2, int param3) : _array[0](param1), _array[1](param2), _array[2](param3)
    {
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/937358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937358</guid><dc:creator><![CDATA[cin]]></dc:creator><pubDate>Thu, 08 Dec 2005 13:58:12 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Thu, 08 Dec 2005 14:31:08 GMT]]></title><description><![CDATA[<p>wobei der letztere Code eher moderne Kunst als gültiges C++ ist.</p>
<p>Mein Vorschlag: verwende std::vector anstelle eines Arrays.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937397</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937397</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Thu, 08 Dec 2005 14:31:08 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Thu, 08 Dec 2005 14:41:12 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>wobei der letztere Code eher moderne Kunst als gültiges C++ ist.</p>
<p>Mein Vorschlag: verwende std::vector anstelle eines Arrays.</p>
</blockquote>
<p>jo war wohl eher eine geistige tiefflugphase <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/937413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937413</guid><dc:creator><![CDATA[cin]]></dc:creator><pubDate>Thu, 08 Dec 2005 14:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Thu, 08 Dec 2005 14:48:09 GMT]]></title><description><![CDATA[<p>Erst mal vielen Dank für die schnelle Antwort!!!!<br />
Das bringt mich schon kräftig weiter...</p>
<p>Frage zum ersten Code:<br />
Wie kann ich dann mit anderen Methoden von A die Instanzen von B innerhalb des Feldes ansprechen???</p>
<pre><code class="language-cpp">_array[0].Write(); //z.B. als einfache Bildschrimausgabe mit cout
</code></pre>
<p>...funktioniert ja jedenfalls nicht!!!!!</p>
<p>Frage zum zweiten Code:<br />
Das lässt sich zumindest bei mir (VS <a href="http://Studio.Net" rel="nofollow">Studio.Net</a>) nicht compilieren!<br />
Meldung: Syntaxfehler '['</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937424</guid><dc:creator><![CDATA[MAV_today]]></dc:creator><pubDate>Thu, 08 Dec 2005 14:48:09 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Thu, 08 Dec 2005 14:53:01 GMT]]></title><description><![CDATA[<p>Da _array ja aus Pointern besteht, mußt du die Elemente für den Zugriff dereferenzieren:</p>
<pre><code class="language-cpp">_array[i]-&gt;write();
</code></pre>
<p>(achja, nur der Vollständigkeit halber: zu dem Code sollte auch noch ein Destruktor gehören, der delete auf alle drei Elemente anwendet - und Copy-Konstruktor und operator=() für eine saubere Kopie)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937429</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 08 Dec 2005 14:53:01 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Thu, 08 Dec 2005 15:58:03 GMT]]></title><description><![CDATA[<p>OK... jetzt ist alles klar... funktioniert prima</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937468</guid><dc:creator><![CDATA[MAV_today]]></dc:creator><pubDate>Thu, 08 Dec 2005 15:58:03 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Thu, 08 Dec 2005 19:31:59 GMT]]></title><description><![CDATA[<p>Wie schon erwähnt wurde, brauche ich ja auch noch einen Destruktor, der per &quot;delete&quot; alle Instanzen der Klasse B im Feld _array bzw. deren Speicher auf dem Heap löscht!!!!</p>
<p>Kann ich das so machen?</p>
<pre><code class="language-cpp">...
~B() {delete *_array;} //inline Destruktor für B 
..
</code></pre>
<p>Wird damit nicht nur das erste Element von _array (also Index 0) gelöscht???</p>
<p>Gruß<br />
MAV</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937624</guid><dc:creator><![CDATA[MAV_today]]></dc:creator><pubDate>Thu, 08 Dec 2005 19:31:59 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Thu, 08 Dec 2005 19:37:03 GMT]]></title><description><![CDATA[<p>... sorry ich hab noch was vergessen:<br />
Mir ist schon klar, dass ich das gesamte Array z.B. mit folgendermaßen löschen könnte.</p>
<pre><code class="language-cpp">~A()
{
    delete _array[0];
    delete _array[1];
    delete _array[2];
}
//geht natürlich nur wenn B auch einen Destruktor hat!!!!
</code></pre>
<p>Oder ich könnte das natürlich auch in einer Schelife abrattern, weil es ja in echt mehr als 3 Objekte im Array sein sollen!!</p>
<p>Ich denke aber das müsste auch eleganter gehen, oder???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937631</guid><dc:creator><![CDATA[MAV_today]]></dc:creator><pubDate>Thu, 08 Dec 2005 19:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Thu, 08 Dec 2005 19:43:10 GMT]]></title><description><![CDATA[<p>MAV_today schrieb:</p>
<blockquote>
<p>//geht natürlich nur wenn B auch einen Destruktor hat!!!!</p>
</blockquote>
<p>Musst du auf jeden Fall machen und hat nichts damit zu tun ob B einen Destruktor hat.<br />
Das eleganteste was mir da einfällt ist eine Schleife.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937636</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Thu, 08 Dec 2005 19:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Fri, 09 Dec 2005 07:18:17 GMT]]></title><description><![CDATA[<p>MAV_today schrieb:</p>
<blockquote>
<p>Ich denke aber das müsste auch eleganter gehen, oder???</p>
</blockquote>
<p>Ja, nimm statt des Arrays einen vector&lt;B&gt; - der weiß von selber, wie er hinter sich aufräumen muß <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>
<pre><code class="language-cpp">class A
{
  vector&lt;B&gt; array;
public:
  A(int p1=0,int p2=0,int p3=0)
  {
    array.push_back(B(p1));
    array.push_back(B(p2));
    array.push_back(B(p3));
  }
};
</code></pre>
<p>(dafür benötigst du einen Konstruktor &quot;B::B(int);&quot; - andernfalls mußt du die push_back()-Aufrufe anpassen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937848</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 09 Dec 2005 07:18:17 GMT</pubDate></item><item><title><![CDATA[Reply to Array von Instanzen on Fri, 09 Dec 2005 10:08:09 GMT]]></title><description><![CDATA[<blockquote>
<p>Ja, nimm statt des Arrays einen vector&lt;B&gt; - der weiß von selber, wie er hinter sich aufräumen muß</p>
</blockquote>
<p>Wobei dir hier die Performance Heini's aufs dach steigen wuerden ^^</p>
<p>vector ist ersatz fuer ein dynamisches Array also was in der art<br />
T * array = new T[X];</p>
<p>hab glaub ich was in der &quot;Aufgabenstellung&quot; von einer fixen arraygroesse von 5 gelesen, da waer ich mit nem vector scho wieder vorsichtiger <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 />
Wenn performance egal ist, ok, dann soll hinnerher aber auch keiner meckern ...</p>
<p>Deshalb die frage, iss die 5 wirklich fix, so fix wie das amen in der kirche ???</p>
<p>Braucht er wirklich nen Array ?</p>
<p>Bei 3D Punktklassen definiert man meist auch 3 unabhaengige variablen und kein Array ^^</p>
<p>Weiterhin fallen so Laute wie &quot;sofort 5 instanzen erstellen im Konstruktor&quot; was eindeutig auf ne composition hindeutet ... ob ich das &quot;dynamisch&quot; machen wuerd ?</p>
<p>Dazu weiss ich aber zu wenig von der aufgabenstellung ^^</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/937966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/937966</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 09 Dec 2005 10:08:09 GMT</pubDate></item></channel></rss>