<?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 speichern]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte Objekte in einem Array oder einer Liste speichern (Was wäre da in C++ am Besten).<br />
Ich bin momentan noch reiner Java- Programmierer und in Java würde ich die Objekte in einen Vector geben aber gibts sowas auch in C++ oder wie macht man das am Besten in C++:</p>
<p>Meine Methode:</p>
<pre><code>void Plantage::pflanzen(ObstBaum* baum)
{
// hier sollte Baum in einem Array gespeichert werden o.ä.
}
</code></pre>
<p>Vielen Dank für die Antworten,</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198994/objekte-speichern</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 20:51:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198994.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Nov 2007 19:53:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekte speichern on Tue, 27 Nov 2007 19:53:11 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte Objekte in einem Array oder einer Liste speichern (Was wäre da in C++ am Besten).<br />
Ich bin momentan noch reiner Java- Programmierer und in Java würde ich die Objekte in einen Vector geben aber gibts sowas auch in C++ oder wie macht man das am Besten in C++:</p>
<p>Meine Methode:</p>
<pre><code>void Plantage::pflanzen(ObstBaum* baum)
{
// hier sollte Baum in einem Array gespeichert werden o.ä.
}
</code></pre>
<p>Vielen Dank für die Antworten,</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411235</guid><dc:creator><![CDATA[PollerCPP]]></dc:creator><pubDate>Tue, 27 Nov 2007 19:53:11 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Tue, 27 Nov 2007 19:58:07 GMT]]></title><description><![CDATA[<p>Benütze einen STL Container.<br />
Der Stanart Container ist std::vector&lt;T&gt; (aus dem Header &lt;vector&gt;).</p>
<p>Du musst dir Gedanken machen, wo das Baum Objekt im Memory ist und wer zuständig ist (z.B. für löschen, falls nötig).</p>
<pre><code>std::vector&lt;ObstBaum*&gt; forest;
</code></pre>
<p>simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411236</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Tue, 27 Nov 2007 19:58:07 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Tue, 27 Nov 2007 21:08:47 GMT]]></title><description><![CDATA[<p>Du solltest dich auch fragen, ob du wirklich einen Vektor mit Zeigern brauchst. Javeprogrammierer neigen bei C++ dazu alles mit &quot;new&quot; auf dem Heap zu allokieren, was oft nicht nötig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411270</guid><dc:creator><![CDATA[Hazzel]]></dc:creator><pubDate>Tue, 27 Nov 2007 21:08:47 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Wed, 28 Nov 2007 05:20:15 GMT]]></title><description><![CDATA[<p>Du meinst also einfach ein Array von Zeigern verwenden, die auf die Bäume zeigen.<br />
Wie würde das gehen?</p>
<p>lg und Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411344</guid><dc:creator><![CDATA[PollerCPP]]></dc:creator><pubDate>Wed, 28 Nov 2007 05:20:15 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Wed, 28 Nov 2007 06:30:54 GMT]]></title><description><![CDATA[<p>Er meint eher direkt die Bäume und nicht deren Zeiger in den vector zu legen <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/1411354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411354</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Wed, 28 Nov 2007 06:30:54 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Wed, 28 Nov 2007 06:36:15 GMT]]></title><description><![CDATA[<p>und wie kann ich das am Besten machen?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1411357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411357</guid><dc:creator><![CDATA[PollerCPP]]></dc:creator><pubDate>Wed, 28 Nov 2007 06:36:15 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Wed, 28 Nov 2007 06:44:29 GMT]]></title><description><![CDATA[<p>Etwa so:</p>
<pre><code class="language-cpp">class Plantage
{
public:
  ...
  void pflanzen(const ObstBaum&amp; baum)
  {
    m_baeume.push_back(baum);
  }
  ...
private:
  vector&lt;ObstBaum&gt; m_baeume;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1411361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411361</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 28 Nov 2007 06:44:29 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Wed, 28 Nov 2007 19:02:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich lies jetzt wie unten gezeigt aus dem vector in einer for- Schleife aus.<br />
Mein Problem ist, dass baeume[i].zeigen() nicht funktioniert, was muss ich da machen damit das geht??</p>
<p>Vielen Dank und lg</p>
<pre><code>std::vector&lt;ObstBaum*&gt; baeume;
void Plantage::pflanzen(ObstBaum *baum)
	{	
	baeume.push_back(baum);
	}
void Plantage::zeigen()
	{
	for (int i = 0; i &lt; baeume.size(); i++)
		std::cout &lt;&lt; baeume[i].zeigen() &lt;&lt;  std::endl;
	}
</code></pre>
<p>ich bekomme folgende Fehlermeldung:</p>
<pre><code>er linke Teil von '.zeigen' muss eine Klasse/Struktur/Union sein
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1411806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411806</guid><dc:creator><![CDATA[PollerCPP]]></dc:creator><pubDate>Wed, 28 Nov 2007 19:02:28 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Wed, 28 Nov 2007 19:34:11 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::vector&lt;ObstBaum*&gt; baeume; // wenn es wirklich Zeiger sein müssen, dann informier dich mal über Smartpointer,
                               // die nehmen dir das Freigeben des Speichers ab (du musst nicht selbst delete aufrufen)

void Plantage::pflanzen(ObstBaum *baum)
	{	
	baeume.push_back(baum);
	}

void Plantage::zeigen()
	{
	for (int i = 0; i &lt; baeume.size(); i++) // informier dich mal über Iteratoren
		std::cout &lt;&lt; baeume[i]-&gt;zeigen() &lt;&lt;  std::endl; // Wenn du Zeiger verwendest musst du auch den richtigen Operator verwenden
	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1411835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411835</guid><dc:creator><![CDATA[OhneName]]></dc:creator><pubDate>Wed, 28 Nov 2007 19:34:11 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Thu, 29 Nov 2007 05:32:25 GMT]]></title><description><![CDATA[<p>Jetzt bekomme ich folgende Fehlermeldung:<br />
Keine Ahnung was ich da falsch mache,<br />
Ich habe eine Klasse Baum, in der zeigen deklariert ist , die Klasse Obstbaum erweitert Baum und die Klassen Apfelbaum und Birnenbaum erweiteren Obstbaum,<br />
Hats da was mit virtual oder so, Die Methode zeigen in der Klasse Baum habe ich schon virtual ge,acht, was aber auch nichts hilft,</p>
<p>Vielleicht hat jemand noch eine Tipp für mich,</p>
<p>lg</p>
<pre><code>ObstPlantage.obj : error LNK2001: Nichtaufgeloestes externes Symbol &quot;public: virtual void __thiscall Baum::zeigen(void)&quot; (?zeigen@Baum@@UAEXXZ)
Debug/ObstPlantage.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1411968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411968</guid><dc:creator><![CDATA[PollerCPP]]></dc:creator><pubDate>Thu, 29 Nov 2007 05:32:25 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Thu, 29 Nov 2007 06:54:18 GMT]]></title><description><![CDATA[<p>Vielleicht solltest du die Methoden der Basisklasse auch irgendwo definieren - oder als pur virtuell anlegen:</p>
<pre><code class="language-cpp">//Variante 1:
class Baum
{
  ...
public:
  virtual string zeigen() const;
};

string Baum::zeigen() const
{
  return &quot;unbekannter Baum&quot;;
}

//Variante 2:
class Baum
{
  ...
public:
  virtual string zeigen() const = 0;//pur virtuell - damit wird die Basisklasse abstrakt
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1411975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1411975</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 29 Nov 2007 06:54:18 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Thu, 29 Nov 2007 18:39:54 GMT]]></title><description><![CDATA[<p>Vielen Dank!! es funkt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412522</guid><dc:creator><![CDATA[PollerCPP]]></dc:creator><pubDate>Thu, 29 Nov 2007 18:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Thu, 29 Nov 2007 20:38:28 GMT]]></title><description><![CDATA[<p>PollerCPP schrieb:</p>
<blockquote>
<pre><code>std::vector&lt;ObstBaum*&gt; baeume; // Das ist gar nicht gut, vor allem für Java Entwickler
void Plantage::pflanzen(ObstBaum *baum)
	{	
	baeume.push_back(baum);
	}
void Plantage::zeigen()
	{
	for (int i = 0; i &lt; baeume.size(); i++)
		std::cout &lt;&lt; baeume[i].zeigen() &lt;&lt;  std::endl;
	}
</code></pre>
</blockquote>
<p>Wie verwaltest Du die Objekte von Typ ObstBaum? STL Container sind für die Speicherung by Value und nicht by Pointer ausgelegt. Wenn Du die Objekte wirklich im Container baeume verwalten willst, solltest Du tunlichst einen passenden SmartPointer wählen. Z.B. so</p>
<pre><code>std::vector&lt;boost::shared_ptr&lt;ObstBaum&gt; &gt; baeueme;
</code></pre>
<p>Andernfalls produzierst Du massenweise Speicherleichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412584</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Thu, 29 Nov 2007 20:38:28 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte speichern on Thu, 29 Nov 2007 20:41:14 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Vielleicht solltest du die Methoden der Basisklasse auch irgendwo definieren - oder als pur virtuell anlegen:</p>
<pre><code class="language-cpp">//Variante 1:
class Baum
{
  ...
public:
  virtual string zeigen() const;
virtual ~Baum(); // den hier nicht vergessen
};
</code></pre>
</blockquote>
<p>Da es sich um ein C++ Neuling handelt sollte man den virtuelle Destruktor nicht vergessen, und am besten ergänzt man bei ihm gleich &quot;throw ()&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1412586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1412586</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Thu, 29 Nov 2007 20:41:14 GMT</pubDate></item></channel></rss>