<?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 mit Objekten in einer Klasse]]></title><description><![CDATA[<p>Hallo,</p>
<p>normal programmiere ich in Java, aber heute hab ich mich mal mit C++ versucht und nun komme ich nicht mehr weiter.</p>
<p>Der Compiler spuckt mir folgende Fehlerliste aus:</p>
<p><a href="http://grab.by/grabs/9b6c0c235c824c6dacc167444efed6cf.png" rel="nofollow">http://grab.by/grabs/9b6c0c235c824c6dacc167444efed6cf.png</a></p>
<p>So wie ich das sehe erkennt er nicht das von mir definierte array sorten, den Datentyp/Objekt Eis und den int arrayZaehler nicht.<br />
Aber warum nicht?</p>
<p>Eisverwaltung.h:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class EisVerwaltung {

private:
	EisVerwaltung() {};
	EisVerwaltung( const EisVerwaltung&amp; );
	EisVerwaltung &amp; operator = (const EisVerwaltung &amp;);
	static int arrayZaehler=0;

public:
	static EisVerwaltung&amp; getInstances(); 
	~EisVerwaltung() {};
	Eis sorten[]=new Eis[5];

	int getArrayZaehler() { return arrayZaehler;};
	void addEis(Eis eis);
	void printAll();
};
</code></pre>
<p>den zugehörigen Ausschnitt aus der EisVerwaltung.cpp:</p>
<pre><code class="language-cpp">void addEis(Eis eis) {
	if (arrayZaehler &lt; sizeof(sorten)/sizeof(sorten[0])) {
		sorten[arrayZaehler] = eis;
		arrayZaehler++;
	} else
		cout &lt;&lt; &quot;Kein Platz mehr fŸr neues Eis!&quot;;
}
</code></pre>
<p>Kann es sein, dass ich nur die Adresse übergeben sollte und dann zuweisen darf, wegen call-by-value?</p>
<p><strong>Meine Fragen:</strong><br />
1. Wie kann ich ein array anlegen und in der Funktion addEis ein Objekt dem array zuweisen?<br />
2. Warum erkennt arrayZaehler nicht?</p>
<p>Ich sag schonmal Danke</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265967/array-mit-objekten-in-einer-klasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 16:41:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265967.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 May 2010 20:35:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array mit Objekten in einer Klasse on Sat, 01 May 2010 20:35:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>normal programmiere ich in Java, aber heute hab ich mich mal mit C++ versucht und nun komme ich nicht mehr weiter.</p>
<p>Der Compiler spuckt mir folgende Fehlerliste aus:</p>
<p><a href="http://grab.by/grabs/9b6c0c235c824c6dacc167444efed6cf.png" rel="nofollow">http://grab.by/grabs/9b6c0c235c824c6dacc167444efed6cf.png</a></p>
<p>So wie ich das sehe erkennt er nicht das von mir definierte array sorten, den Datentyp/Objekt Eis und den int arrayZaehler nicht.<br />
Aber warum nicht?</p>
<p>Eisverwaltung.h:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class EisVerwaltung {

private:
	EisVerwaltung() {};
	EisVerwaltung( const EisVerwaltung&amp; );
	EisVerwaltung &amp; operator = (const EisVerwaltung &amp;);
	static int arrayZaehler=0;

public:
	static EisVerwaltung&amp; getInstances(); 
	~EisVerwaltung() {};
	Eis sorten[]=new Eis[5];

	int getArrayZaehler() { return arrayZaehler;};
	void addEis(Eis eis);
	void printAll();
};
</code></pre>
<p>den zugehörigen Ausschnitt aus der EisVerwaltung.cpp:</p>
<pre><code class="language-cpp">void addEis(Eis eis) {
	if (arrayZaehler &lt; sizeof(sorten)/sizeof(sorten[0])) {
		sorten[arrayZaehler] = eis;
		arrayZaehler++;
	} else
		cout &lt;&lt; &quot;Kein Platz mehr fŸr neues Eis!&quot;;
}
</code></pre>
<p>Kann es sein, dass ich nur die Adresse übergeben sollte und dann zuweisen darf, wegen call-by-value?</p>
<p><strong>Meine Fragen:</strong><br />
1. Wie kann ich ein array anlegen und in der Funktion addEis ein Objekt dem array zuweisen?<br />
2. Warum erkennt arrayZaehler nicht?</p>
<p>Ich sag schonmal Danke</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891095</guid><dc:creator><![CDATA[Acronis]]></dc:creator><pubDate>Sat, 01 May 2010 20:35:36 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit Objekten in einer Klasse on Sat, 01 May 2010 20:40:18 GMT]]></title><description><![CDATA[<p>Dir fehlt zu viel Grundverständnis von C++, um dir die Probleme auf die Schnelle zu erklären. Am besten schaust du dir mal <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-251551.html" rel="nofollow">diesen Thread</a> an und besorgst dir ein entsprechendes Anfängerbuch. C++ mag zwar oberflächliche Gemeinsamkeiten mit Java haben, hat aber komplett andere Konzepte. Du musst also sehr viele Dinge neu lernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891100</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 01 May 2010 20:40:18 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit Objekten in einer Klasse on Sat, 01 May 2010 20:53:16 GMT]]></title><description><![CDATA[<p>+1 für das, was Nexus sagte.</p>
<p>Acronis schrieb:</p>
<blockquote>
<p>Eisverwaltung.h:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;
</code></pre>
</blockquote>
<p>Diese using-Direktive hat in Headerdateien nichts verloren.</p>
<blockquote>
<pre><code class="language-cpp">class EisVerwaltung {

private:
	EisVerwaltung() {};
	EisVerwaltung( const EisVerwaltung&amp; );
	EisVerwaltung &amp; operator = (const EisVerwaltung &amp;);
	static int arrayZaehler=0;
</code></pre>
</blockquote>
<p>Ein Semikolon hinter Funktionskörpern ist überflüssig. Ein Initialisierer für arrayZaehler ist hier nicht erlaubt. static int arrayZaehler ist nur eine Deklaration und keine Definition. Die Variable muss noch irgendwo angelegt werden.</p>
<blockquote>
<pre><code class="language-cpp">public:
	static EisVerwaltung&amp; getInstances(); 
	~EisVerwaltung() {};
	Eis sorten[]=new Eis[5];
</code></pre>
</blockquote>
<p>Wenn Dein Destruktor nichts tut, brauchst Du ihn auch nicht. Zumindest keinen inline-Destruktor, der nichts tut. Die Deklaration <code>Eis sorten[]</code> ist illegal. Arrays funktionieren in C und C++ nicht so, wie Du es aus Java kennst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891112</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 01 May 2010 20:53:16 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit Objekten in einer Klasse on Sat, 01 May 2010 21:07:02 GMT]]></title><description><![CDATA[<p>heißt also, dass ich in c++ kein array anlegen kann, womit ich dann beliebig die Referenz des Array-Feldes auf das gewünschte Objekt umleiten lassen kann?</p>
<p>Wie macht man dann sowas in C++? verkettete Listen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891122</guid><dc:creator><![CDATA[Acronis]]></dc:creator><pubDate>Sat, 01 May 2010 21:07:02 GMT</pubDate></item><item><title><![CDATA[Reply to Array mit Objekten in einer Klasse on Sat, 01 May 2010 21:15:31 GMT]]></title><description><![CDATA[<p>Acronis schrieb:</p>
<blockquote>
<p>heißt also, dass ich in c++ kein array anlegen kann, womit ich dann beliebig die Referenz des Array-Feldes auf das gewünschte Objekt umleiten lassen kann?</p>
</blockquote>
<p>Du denkst zu stark in Java. C++ hat nicht wie Java Referenzsemantik, sondern Wertsemantik. Ein Element eines Arrays ist ein Objekt, keine Referenz. Sowie das Array selbst ein Objekt und keine Referenz ist. Ein Array ist in C++ auch keine Klasse mit Methoden, und du musst die Grösse bei der Definition angeben.</p>
<p>Deswegen mein Ratschlag mit dem Neulernen. Du wirst sonst auf Dauer nur Probleme haben, weil du versuchst, Konzepte 1:1 zu übertragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1891124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1891124</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 01 May 2010 21:15:31 GMT</pubDate></item></channel></rss>