<?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[mit new einen Zeiger auf eine Liste von Zeigern erstellen]]></title><description><![CDATA[<p>Hallo ich würde gerne Folgendes umsetzen:</p>
<p>Ich möchte Daten in einer mit new erzeugten Struktur speichern.</p>
<pre><code class="language-cpp">// Beginn meiner Funktion
Struktur *neuesElement = new Struktur;
// Struktur wird mit Daten befüllt
return neuesElement;
// Ende meiner Funktion
</code></pre>
<p>Da dies in einer Funktion geschieht will ich den Zeiger zurückgeben und in einer Liste Speichern (Liste meiner Elemente).</p>
<p>Diese Liste würde ich wie folgt erstellen wollen (geht das???):</p>
<pre><code class="language-cpp">Struktur *adress_Liste[2]; //Hier Liste für zwei Element-Adressen
adress_Liste[0] = funktion_zum_anlegen_meiner_Elemente();
adress_Liste[1] = funktion_zum_anlegen_meiner_Elemente();
</code></pre>
<p>Da ich aber flexibel mit der Anzahl meiner Elemente sein will habe ich mir folgendes überlegt: Ich lege eine Variable für die Elementenanzahl an und einen Zeiger der auf die aktuelle Liste zeigt. Sobald ein neues Element hinzukommen soll wird eine neue Liste erzeugt in der die Anzahl der aktuellen Elemente plus 1 aufnehmen kann. Ich kopiere alle Adressen aus der aktuellen Liste in die neue Liste, füge dann die Adresse des neuen Element hinten dran. Dann wird die aktuelle Liste gelöscht und die Adresse der neuen Liste in den Listenzeiger gespeichert.</p>
<pre><code>Listenzeiger  --&gt; [Adresse: AdressListe aktuell  ]
                  [ 0 (Adresse von Struktur 1)   ] --&gt; [Struktur1]
                  [ 1 (Adresse von Struktur 2)   ] --&gt; [Struktur2]
                  [ 2 (Adresse von Struktur 3)   ] --&gt; [Struktur3]
</code></pre>
<p>Wird nun eine Strukur4 erzeugt, wird eine neue Adressliste erstellt und mit den alten Adressen, so wie die Adresse des neuen Element, befüllt.</p>
<pre><code>Listenzeiger  --&gt; [Adresse: AdressListe aktuell  ]
                  [ 0 (Adresse von Struktur 1)   ] --&gt; [Struktur1]
                  [ 1 (Adresse von Struktur 2)   ] --&gt; [Struktur2]
                  [ 2 (Adresse von Struktur 3)   ] --&gt; [Struktur3]

                  [Adresse: AdressListe neu      ]
                  [ 0 (Adresse von Struktur 1)   ] --&gt; [Struktur1]
                  [ 1 (Adresse von Struktur 2)   ] --&gt; [Struktur2]
                  [ 2 (Adresse von Struktur 3)   ] --&gt; [Struktur3]
                  [ 3 (Adresse von Struktur 4)   ] --&gt; [Struktur4]
</code></pre>
<p>Danach die alte Liste löschen und den Listenzeiger auf die neue Liste setzen:</p>
<pre><code>Listenzeiger  --&gt; [Adresse: AdressListe new(jetzt aktuell)  ]
                  [ 0 (Adresse von Struktur 1)              ] --&gt; [Struktur1]
                  [ 1 (Adresse von Struktur 2)              ] --&gt; [Struktur2]
                  [ 2 (Adresse von Struktur 3)              ] --&gt; [Struktur3]
                  [ 3 (Adresse von Struktur 4)              ] --&gt; [Struktur4]
</code></pre>
<p>Mein Ansatz wäre folgender:</p>
<pre><code class="language-cpp">class Speicher
{
// Member-Funktionen:
  public:
    Speicher();
    Element_add();
    Element_sub();

// Member-Variablen:
  private:
    int anzMember;
    struct Struktur{
      char text1[100];
      char text2[100];
      // Hier wird warschl. später noch mehr hinzukommen.
    };
    Member **ptr_vokabel_Liste;
};
Speicher::Speicher()
{
  anzVokabeln = 0;          // Anzahl der Vokabeln: initalisieren
  Struktur *adress_Liste[1];
  adress_Liste[0] = 0;      // 
  ptr_adressen_Liste = new (???) //&lt;-- was muss hier her? Eigentlich ja der Typ also Struktur[] ???
};
</code></pre>
<p>Bin ehrlich gesagt noch Anfänger, das Programm das ich erstelle soll mir helfen, mich in C++ rein zu denken. Ich habe mir vorgenommen ein Programm zur Abfrage von Vokabeln zu erstellen. Stehe ganz am Anfang, aber schon vor meinem ersten Problem: Wo und wie speichere ich die zueinander gehörenden Vokabeln ab.</p>
<p>Habe mir vorgenommen das Programm ganz einfach als Konsolen-Anwendung zu schreiben. Und sobald es das absolute Minimum an Funktionen hat und sicher läuft, werde ich mir mir ein paar weitere Funktionen ausdenken und die hinzufügen... usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/236189/mit-new-einen-zeiger-auf-eine-liste-von-zeigern-erstellen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 02:32:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236189.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Mar 2009 20:45:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to mit new einen Zeiger auf eine Liste von Zeigern erstellen on Wed, 11 Mar 2009 20:47:43 GMT]]></title><description><![CDATA[<p>Hallo ich würde gerne Folgendes umsetzen:</p>
<p>Ich möchte Daten in einer mit new erzeugten Struktur speichern.</p>
<pre><code class="language-cpp">// Beginn meiner Funktion
Struktur *neuesElement = new Struktur;
// Struktur wird mit Daten befüllt
return neuesElement;
// Ende meiner Funktion
</code></pre>
<p>Da dies in einer Funktion geschieht will ich den Zeiger zurückgeben und in einer Liste Speichern (Liste meiner Elemente).</p>
<p>Diese Liste würde ich wie folgt erstellen wollen (geht das???):</p>
<pre><code class="language-cpp">Struktur *adress_Liste[2]; //Hier Liste für zwei Element-Adressen
adress_Liste[0] = funktion_zum_anlegen_meiner_Elemente();
adress_Liste[1] = funktion_zum_anlegen_meiner_Elemente();
</code></pre>
<p>Da ich aber flexibel mit der Anzahl meiner Elemente sein will habe ich mir folgendes überlegt: Ich lege eine Variable für die Elementenanzahl an und einen Zeiger der auf die aktuelle Liste zeigt. Sobald ein neues Element hinzukommen soll wird eine neue Liste erzeugt in der die Anzahl der aktuellen Elemente plus 1 aufnehmen kann. Ich kopiere alle Adressen aus der aktuellen Liste in die neue Liste, füge dann die Adresse des neuen Element hinten dran. Dann wird die aktuelle Liste gelöscht und die Adresse der neuen Liste in den Listenzeiger gespeichert.</p>
<pre><code>Listenzeiger  --&gt; [Adresse: AdressListe aktuell  ]
                  [ 0 (Adresse von Struktur 1)   ] --&gt; [Struktur1]
                  [ 1 (Adresse von Struktur 2)   ] --&gt; [Struktur2]
                  [ 2 (Adresse von Struktur 3)   ] --&gt; [Struktur3]
</code></pre>
<p>Wird nun eine Strukur4 erzeugt, wird eine neue Adressliste erstellt und mit den alten Adressen, so wie die Adresse des neuen Element, befüllt.</p>
<pre><code>Listenzeiger  --&gt; [Adresse: AdressListe aktuell  ]
                  [ 0 (Adresse von Struktur 1)   ] --&gt; [Struktur1]
                  [ 1 (Adresse von Struktur 2)   ] --&gt; [Struktur2]
                  [ 2 (Adresse von Struktur 3)   ] --&gt; [Struktur3]

                  [Adresse: AdressListe neu      ]
                  [ 0 (Adresse von Struktur 1)   ] --&gt; [Struktur1]
                  [ 1 (Adresse von Struktur 2)   ] --&gt; [Struktur2]
                  [ 2 (Adresse von Struktur 3)   ] --&gt; [Struktur3]
                  [ 3 (Adresse von Struktur 4)   ] --&gt; [Struktur4]
</code></pre>
<p>Danach die alte Liste löschen und den Listenzeiger auf die neue Liste setzen:</p>
<pre><code>Listenzeiger  --&gt; [Adresse: AdressListe new(jetzt aktuell)  ]
                  [ 0 (Adresse von Struktur 1)              ] --&gt; [Struktur1]
                  [ 1 (Adresse von Struktur 2)              ] --&gt; [Struktur2]
                  [ 2 (Adresse von Struktur 3)              ] --&gt; [Struktur3]
                  [ 3 (Adresse von Struktur 4)              ] --&gt; [Struktur4]
</code></pre>
<p>Mein Ansatz wäre folgender:</p>
<pre><code class="language-cpp">class Speicher
{
// Member-Funktionen:
  public:
    Speicher();
    Element_add();
    Element_sub();

// Member-Variablen:
  private:
    int anzMember;
    struct Struktur{
      char text1[100];
      char text2[100];
      // Hier wird warschl. später noch mehr hinzukommen.
    };
    Member **ptr_vokabel_Liste;
};
Speicher::Speicher()
{
  anzVokabeln = 0;          // Anzahl der Vokabeln: initalisieren
  Struktur *adress_Liste[1];
  adress_Liste[0] = 0;      // 
  ptr_adressen_Liste = new (???) //&lt;-- was muss hier her? Eigentlich ja der Typ also Struktur[] ???
};
</code></pre>
<p>Bin ehrlich gesagt noch Anfänger, das Programm das ich erstelle soll mir helfen, mich in C++ rein zu denken. Ich habe mir vorgenommen ein Programm zur Abfrage von Vokabeln zu erstellen. Stehe ganz am Anfang, aber schon vor meinem ersten Problem: Wo und wie speichere ich die zueinander gehörenden Vokabeln ab.</p>
<p>Habe mir vorgenommen das Programm ganz einfach als Konsolen-Anwendung zu schreiben. Und sobald es das absolute Minimum an Funktionen hat und sicher läuft, werde ich mir mir ein paar weitere Funktionen ausdenken und die hinzufügen... usw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678342</guid><dc:creator><![CDATA[mtepe]]></dc:creator><pubDate>Wed, 11 Mar 2009 20:47:43 GMT</pubDate></item><item><title><![CDATA[Reply to mit new einen Zeiger auf eine Liste von Zeigern erstellen on Wed, 11 Mar 2009 20:51:31 GMT]]></title><description><![CDATA[<p>Du weisst, dass es in C++ eine Standardbibliothek gibt?<br />
<a href="http://www.cplusplus.com/reference/" rel="nofollow">http://www.cplusplus.com/reference/</a></p>
<p>Und das es in dieser Standardbibliothek Container gibt?<br />
<a href="http://www.cplusplus.com/reference/stl/" rel="nofollow">http://www.cplusplus.com/reference/stl/</a></p>
<p>Und das es dort eine Map gibt, wo man Werte zu Schlüsseln speichern kann?<br />
<a href="http://www.cplusplus.com/reference/stl/map/" rel="nofollow">http://www.cplusplus.com/reference/stl/map/</a></p>
<p>Womit lernst du C++?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678344</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 11 Mar 2009 20:51:31 GMT</pubDate></item><item><title><![CDATA[Reply to mit new einen Zeiger auf eine Liste von Zeigern erstellen on Wed, 11 Mar 2009 21:10:40 GMT]]></title><description><![CDATA[<p>Ich hab dir den entsprechenden bereich einmal zerplückt.</p>
<p>mtepe schrieb:</p>
<blockquote>
<p>Mein Ansatz wäre folgender:</p>
<pre><code class="language-cpp">class Speicher
{
//....
// Member-Variablen:
  private:
    int anzMember;
    struct Struktur{
      //....
    };
    Member **ptr_vokabel_Liste;
};
Speicher::Speicher()
{

  anzVokabeln = 0;          // Anzahl der Vokabeln: initalisieren
  Struktur *adress_Liste[1];
  adress_Liste[0] = 0;      // 
  ptr_adressen_Liste = new (???) //&lt;-- was muss hier her? Eigentlich ja der Typ also Struktur[] ???
};
</code></pre>
</blockquote>
<p>Also das ganze hat ein paar Lücken. die Anzahld er enthaltenen Vokabeln ist schonmal so richtig. die 2 Zeilen danach ergeben erstmal so keinen Sinn. und die Zeile darunter muß new Zeiger sein.</p>
<p>korrekt würde das ganze so aussehen:</p>
<pre><code class="language-cpp">Speicher::Speicher()
{

  anzVokabeln = 0;          // Anzahl der Vokabeln: initalisieren
  ptr_adressen_Liste = new Structur*[x]//du erstellst auf einen Zeiger Zeiger eine Liste aus Zeigern, x ist die gewünschte Anzahl
};
</code></pre>
<p>Damit kannst du jetzt folgendes machen:</p>
<pre><code class="language-cpp">ptr_adressen_Liste[x]=new Structur;
</code></pre>
<p>New Structur kann dabei auch eine Funtkion sein die einen zeiegr auf Structur zurückgibt. Wichtig dabei, unbedingt beachten, wenn du delete[] auf ptr_adressen_Liste machst wird nur die Liste gelöscht nicht der Inhalt, dh wenn du die Liste erweiterst brauchst du nur die zeiger in die neue Liste zuzuweisen und die Alte zu löschen, aber wenn du die liste nicht mehr brauchst mußt du vor dem Löschen der Liste ein delete auf jedes Element der liste machen in dem ein Objekt steckt sonst gibts Speicherlecks vom feinsten.</p>
<p>Ich würde dir wenn du es so machen willst raten die Liste imemr gleich etwas weiter zu erweitern, sonst müsstest du sie für alles was du hinzufügst jedesmal ne erweietrung durchführen. Außerdem solltest du dann ungenutzte Zeiger auf NULL setzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1678357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1678357</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Wed, 11 Mar 2009 21:10:40 GMT</pubDate></item></channel></rss>