<?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[Arrays variabler Länge]]></title><description><![CDATA[<p>ich bastel an einer Baumstruktur (jeder Knoten, natürlich als Klasse definiert, hat einen Vater, bis auf die Wurzel und jeder Knoten kann mehrere Kinder haben). Auf das Vater-Objekt zeigt ein Zeiger, um auf die Kinderobjekte zu zeigen, benötige ich ein Array von Zeigern. Ich möchte aber nicht die Arraylänge durch eine Konstante festlegen, sondern bei der Erschaffung eines Knotenbjekts die Arraylänge als Parameter dem neuen Objekt mitteilen.</p>
<p>Habe versucht die Länge erstmal wegzulassen (Knoten * Kinder[]), das 0te und das 1te Kind wird problemlos erzeugt, das 2te Kind verursacht dann aber einen Memory-Overflow. Hat jemand eine Lösung, oder wenigstens einen Ansatz.</p>
<p>Übrigens, ich arbeite mit Eclipse und als Compiler ist MinGW eingebunden.</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;string&gt;<br />
using namespace std;<br />
struct Task{<br />
Task ();<br />
Task (int KNOTENNR,int KINNA);</p>
<p>int alphaIst(){return alpha;};//erstma unwichtig, fuer den spaeteren Algo aus ner Vorlesung wichtig<br />
int nameIst(){return knotenNr;};<br />
int wieVieleKinder(){return anzahlKinder;};<br />
void hatEinKind(Task kind);</p>
<p>Task * papa;<br />
Task * baelger[];</p>
<p>private:<br />
int knotenNr;<br />
int alpha;<br />
int anzahlKinder;</p>
<p>};</p>
<p>Task::Task()<br />
:alpha(0), anzahlKinder(0) {}<br />
Task::Task(int kinner,int nr)<br />
:anzahlKinder(kinner),knotenNr(nr),alpha(0) {}<br />
void Task::hatEinKind(Task kind){<br />
cout &lt;&lt; &quot;0. Groesse des Arrays ist &quot; &lt;&lt; sizeof baelger&lt;&lt; endl;<br />
cout &lt;&lt; &quot;1. der Name des Balgs: &quot; &lt;&lt; kind.nameIst()&lt;&lt; endl;<br />
cout &lt;&lt; &quot;2. anzahlKinder war eben: &quot; &lt;&lt; anzahlKinder &lt;&lt; endl;<br />
baelger[anzahlKinder]= &amp;kind;<br />
cout &lt;&lt; &quot;3. Probe: Kind &quot; &lt;&lt; anzahlKinder &lt;&lt; &quot; traegt den Namen &quot; &lt;&lt; baelger[anzahlKinder]-&gt;nameIst()&lt;&lt;endl;</p>
<p>anzahlKinder++;<br />
cout &lt;&lt; &quot;4. anzahlKinder ist nun: &quot; &lt;&lt; anzahlKinder &lt;&lt; endl;<br />
}</p>
<p>int main () {<br />
cout &lt;&lt; &quot;los gehts&quot; &lt;&lt; endl;</p>
<p>Task knoten1(0,1);<br />
Task knoten2(0,2);<br />
Task knoten3(0,3);<br />
Task knoten4(0,4);<br />
Task knoten5(0,5);<br />
Task knoten6(0,6);<br />
Task knoten7(0,7);</p>
<p>knoten1.hatEinKind(knoten2);<br />
knoten1.hatEinKind(knoten3);<br />
knoten1.hatEinKind(knoten4);//diese Zeile verursacht den Fehler<br />
return 0;}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/129356/arrays-variabler-länge</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 06:06:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/129356.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Dec 2005 22:49:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Arrays variabler Länge on Mon, 12 Dec 2005 22:49:55 GMT]]></title><description><![CDATA[<p>ich bastel an einer Baumstruktur (jeder Knoten, natürlich als Klasse definiert, hat einen Vater, bis auf die Wurzel und jeder Knoten kann mehrere Kinder haben). Auf das Vater-Objekt zeigt ein Zeiger, um auf die Kinderobjekte zu zeigen, benötige ich ein Array von Zeigern. Ich möchte aber nicht die Arraylänge durch eine Konstante festlegen, sondern bei der Erschaffung eines Knotenbjekts die Arraylänge als Parameter dem neuen Objekt mitteilen.</p>
<p>Habe versucht die Länge erstmal wegzulassen (Knoten * Kinder[]), das 0te und das 1te Kind wird problemlos erzeugt, das 2te Kind verursacht dann aber einen Memory-Overflow. Hat jemand eine Lösung, oder wenigstens einen Ansatz.</p>
<p>Übrigens, ich arbeite mit Eclipse und als Compiler ist MinGW eingebunden.</p>
<p>#include &lt;iostream&gt;<br />
#include &lt;string&gt;<br />
using namespace std;<br />
struct Task{<br />
Task ();<br />
Task (int KNOTENNR,int KINNA);</p>
<p>int alphaIst(){return alpha;};//erstma unwichtig, fuer den spaeteren Algo aus ner Vorlesung wichtig<br />
int nameIst(){return knotenNr;};<br />
int wieVieleKinder(){return anzahlKinder;};<br />
void hatEinKind(Task kind);</p>
<p>Task * papa;<br />
Task * baelger[];</p>
<p>private:<br />
int knotenNr;<br />
int alpha;<br />
int anzahlKinder;</p>
<p>};</p>
<p>Task::Task()<br />
:alpha(0), anzahlKinder(0) {}<br />
Task::Task(int kinner,int nr)<br />
:anzahlKinder(kinner),knotenNr(nr),alpha(0) {}<br />
void Task::hatEinKind(Task kind){<br />
cout &lt;&lt; &quot;0. Groesse des Arrays ist &quot; &lt;&lt; sizeof baelger&lt;&lt; endl;<br />
cout &lt;&lt; &quot;1. der Name des Balgs: &quot; &lt;&lt; kind.nameIst()&lt;&lt; endl;<br />
cout &lt;&lt; &quot;2. anzahlKinder war eben: &quot; &lt;&lt; anzahlKinder &lt;&lt; endl;<br />
baelger[anzahlKinder]= &amp;kind;<br />
cout &lt;&lt; &quot;3. Probe: Kind &quot; &lt;&lt; anzahlKinder &lt;&lt; &quot; traegt den Namen &quot; &lt;&lt; baelger[anzahlKinder]-&gt;nameIst()&lt;&lt;endl;</p>
<p>anzahlKinder++;<br />
cout &lt;&lt; &quot;4. anzahlKinder ist nun: &quot; &lt;&lt; anzahlKinder &lt;&lt; endl;<br />
}</p>
<p>int main () {<br />
cout &lt;&lt; &quot;los gehts&quot; &lt;&lt; endl;</p>
<p>Task knoten1(0,1);<br />
Task knoten2(0,2);<br />
Task knoten3(0,3);<br />
Task knoten4(0,4);<br />
Task knoten5(0,5);<br />
Task knoten6(0,6);<br />
Task knoten7(0,7);</p>
<p>knoten1.hatEinKind(knoten2);<br />
knoten1.hatEinKind(knoten3);<br />
knoten1.hatEinKind(knoten4);//diese Zeile verursacht den Fehler<br />
return 0;}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/940708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/940708</guid><dc:creator><![CDATA[Mr.White]]></dc:creator><pubDate>Mon, 12 Dec 2005 22:49:55 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays variabler Länge on Mon, 12 Dec 2005 23:54:51 GMT]]></title><description><![CDATA[<p>Benutz std::vector. Wurde hier schon tausendmal im Forum darüber gesprochen. In jedem vernünftigen C++ Buch findest du was über std::vector. Wenn nicht, dann eines kaufen oder erstmal meinen Beitrag lesen:</p>
<p><a href="http://www.kharchi.de/cppratgeber2.htm" rel="nofollow">http://www.kharchi.de/cppratgeber2.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/940729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/940729</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 12 Dec 2005 23:54:51 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays variabler Länge on Tue, 13 Dec 2005 07:20:22 GMT]]></title><description><![CDATA[<p>Und selbst wenn du mit reinen Pointern arbeiten willst/mußt/..., ist deine Deklaration Käse - Task::baelger ist ein Array unbekannter Größe von Task-Pointern. Du benötigst so etwas:</p>
<pre><code class="language-cpp">struct Task
{
  Task* parent;
  Task* childs;

  Task(int nr,int ch_anz) : childs(new Task[ch_anz]),number(nr),child_count(ch_anz) {}
  ~Task() {delete[] childs;}

private:
  int number;
  int child_count;
  //...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/940755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/940755</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 13 Dec 2005 07:20:22 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays variabler Länge on Tue, 13 Dec 2005 19:43:29 GMT]]></title><description><![CDATA[<p>danke ersma,</p>
<p>bin neu im forum, daher ging es schneller das problem zu schildern, als stundenlang nach einem aehnlichen problem zu suchen. ich werde erstmal die vektoren ausprobieren, da man hinten imma wat anhaengen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/941395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/941395</guid><dc:creator><![CDATA[Mr.White]]></dc:creator><pubDate>Tue, 13 Dec 2005 19:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays variabler Länge on Tue, 13 Dec 2005 19:47:57 GMT]]></title><description><![CDATA[<p>Hallo,<br />
noch nen schöner Link, ist zwar für C, aber dennoch intressant:<br />
<a href="http://www.pronix.de/pronix-834.html" rel="nofollow">http://www.pronix.de/pronix-834.html</a></p>
<p>P.S. Dynamische Datenstrukturen (auch Arrays), werden in dem Buch hier behandelt:<br />
<a href="http://www.pronix.de/pronix-632.html" rel="nofollow">http://www.pronix.de/pronix-632.html</a> (Wieder für C)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/941401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/941401</guid><dc:creator><![CDATA[Peter_Meier]]></dc:creator><pubDate>Tue, 13 Dec 2005 19:47:57 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays variabler Länge on Tue, 13 Dec 2005 22:49:28 GMT]]></title><description><![CDATA[<p>Wir sind ein C++ Forum, C ist hier verpönt, wenn es eine C++ Lösung gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/941535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/941535</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 13 Dec 2005 22:49:28 GMT</pubDate></item><item><title><![CDATA[Reply to Arrays variabler Länge on Tue, 13 Dec 2005 23:12:29 GMT]]></title><description><![CDATA[<p>(a) C programmiert man anders als C++<br />
(b) Sind besonders Array bei C (99) anders (siehe VLAs etc.)</p>
<p>=&gt; Links wertlos</p>
]]></description><link>https://www.c-plusplus.net/forum/post/941550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/941550</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Tue, 13 Dec 2005 23:12:29 GMT</pubDate></item></channel></rss>