<?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[Probleme mit statischer Membervariable &#x2F; new Klasse]]></title><description><![CDATA[<p>Hallo Community!<br />
Ich habe ein Problem bei dem reservieren von Speicherplatz für eine Klasse. Ich weiß nicht genau wo die Fehlerquelle liegt,<br />
aber als ich das ganze ohne die Variable cObj probiert habe funktionierte es noch einwandfrei. ^^</p>
<p>Code:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class example {
private:
	static int counter;
	int cObj;

public:
	int var;

	example() {
		cObj = ++counter;
		if (!cObj) cout &lt;&lt; endl;
		cout &lt;&lt; &quot;  create #&quot; &lt;&lt; cObj &lt;&lt; endl;
	}

	~example() {
		--counter;
		cout &lt;&lt; &quot;  delete #&quot; &lt;&lt; cObj &lt;&lt; endl;
		if (!counter) cout &lt;&lt; endl;
	}
};

int example::counter = 0;

void main() {
	example *pArr[3];
	int index = sizeof(pArr) / sizeof(example);

	for (int i = 0; i &lt; index; ++i) {
		pArr[i] = new example;
	}

	cout &lt;&lt; endl;

	pArr[1]-&gt;var = 12;
	delete pArr[0];

	for (int i = 1; i &lt; index; ++i) {
		delete pArr[i];
	}
}
</code></pre>
<p>Hier ohne cObj:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class example {
private:
	static int counter;

public:
	int var;

	example() {
		if (!counter) cout &lt;&lt; endl;
		cout &lt;&lt; &quot;  create #&quot; &lt;&lt; ++counter &lt;&lt; endl;
	}

	~example() {
		cout &lt;&lt; &quot;  delete #&quot; &lt;&lt; counter-- &lt;&lt; endl;
		if (!counter) cout &lt;&lt; endl;
	}
};

int example::counter = 0;

void main() {
	example *pArr[3];
	int index = sizeof(pArr) / sizeof(example);

	for (int i = 0; i &lt; index; ++i) {
		pArr[i] = new example;
	}

	cout &lt;&lt; endl;

	pArr[1]-&gt;var = 12;
	delete pArr[0];

	for (int i = 1; i &lt; index; ++i) {
		delete pArr[i];
	}
}
</code></pre>
<p>Das muss irgendwas mit der statischen Membervariable zu tun haben.<br />
Aber ich komme nicht dahinter was es ist.<br />
Ich hoffe ihr könnt mir helfen! <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322301/probleme-mit-statischer-membervariable-new-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 10:30:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322301.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Dec 2013 14:36:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit statischer Membervariable &#x2F; new Klasse on Sat, 14 Dec 2013 14:39:11 GMT]]></title><description><![CDATA[<p>Hallo Community!<br />
Ich habe ein Problem bei dem reservieren von Speicherplatz für eine Klasse. Ich weiß nicht genau wo die Fehlerquelle liegt,<br />
aber als ich das ganze ohne die Variable cObj probiert habe funktionierte es noch einwandfrei. ^^</p>
<p>Code:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class example {
private:
	static int counter;
	int cObj;

public:
	int var;

	example() {
		cObj = ++counter;
		if (!cObj) cout &lt;&lt; endl;
		cout &lt;&lt; &quot;  create #&quot; &lt;&lt; cObj &lt;&lt; endl;
	}

	~example() {
		--counter;
		cout &lt;&lt; &quot;  delete #&quot; &lt;&lt; cObj &lt;&lt; endl;
		if (!counter) cout &lt;&lt; endl;
	}
};

int example::counter = 0;

void main() {
	example *pArr[3];
	int index = sizeof(pArr) / sizeof(example);

	for (int i = 0; i &lt; index; ++i) {
		pArr[i] = new example;
	}

	cout &lt;&lt; endl;

	pArr[1]-&gt;var = 12;
	delete pArr[0];

	for (int i = 1; i &lt; index; ++i) {
		delete pArr[i];
	}
}
</code></pre>
<p>Hier ohne cObj:</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

class example {
private:
	static int counter;

public:
	int var;

	example() {
		if (!counter) cout &lt;&lt; endl;
		cout &lt;&lt; &quot;  create #&quot; &lt;&lt; ++counter &lt;&lt; endl;
	}

	~example() {
		cout &lt;&lt; &quot;  delete #&quot; &lt;&lt; counter-- &lt;&lt; endl;
		if (!counter) cout &lt;&lt; endl;
	}
};

int example::counter = 0;

void main() {
	example *pArr[3];
	int index = sizeof(pArr) / sizeof(example);

	for (int i = 0; i &lt; index; ++i) {
		pArr[i] = new example;
	}

	cout &lt;&lt; endl;

	pArr[1]-&gt;var = 12;
	delete pArr[0];

	for (int i = 1; i &lt; index; ++i) {
		delete pArr[i];
	}
}
</code></pre>
<p>Das muss irgendwas mit der statischen Membervariable zu tun haben.<br />
Aber ich komme nicht dahinter was es ist.<br />
Ich hoffe ihr könnt mir helfen! <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371813</guid><dc:creator><![CDATA[Make-Grafik]]></dc:creator><pubDate>Sat, 14 Dec 2013 14:39:11 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit statischer Membervariable &#x2F; new Klasse on Sat, 14 Dec 2013 14:38:01 GMT]]></title><description><![CDATA[<p>wie wärs wenn du uns die compilermeldung nicht vorenthältst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371814</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Sat, 14 Dec 2013 14:38:01 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit statischer Membervariable &#x2F; new Klasse on Sat, 14 Dec 2013 14:40:59 GMT]]></title><description><![CDATA[<p>Hey, es gibt keine...<br />
Das Programm stürzt lediglich ab.<br />
Und zwar NACHDEM die erste for Schleife einmal komplett ausgeführt wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371815</guid><dc:creator><![CDATA[Make-Grafik]]></dc:creator><pubDate>Sat, 14 Dec 2013 14:40:59 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit statischer Membervariable &#x2F; new Klasse on Sat, 14 Dec 2013 14:41:59 GMT]]></title><description><![CDATA[<p>Das kommt davon wenn man manuell mit Speicher rumspielt.<br />
Bei der Berechnung des index, das soll wohl die Gesamtgröße sein oder?<br />
Die Größe eines Arrays erhalt man via:<br />
sizeof(arr) / sizeof(element_in_arr)<br />
Du schreibst:<br />
sizeof(arr) / sizeof(example)<br />
In dem Array sind aber keine examples, sondern Pointer darauf!<br />
Als example noch genauso groß war wie ein Pointer (ohne cObj) ging das, mit cObj nicht mehr, weil example nun nicht mehr so groß wie ein Pointer ist.<br />
BTW: Rule of Three verletzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371816</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 14 Dec 2013 14:41:59 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit statischer Membervariable &#x2F; new Klasse on Sat, 14 Dec 2013 14:48:24 GMT]]></title><description><![CDATA[<p>Tatsache...<br />
Vielen dank ^^<br />
Lässt sich aber der index nicht trotzdem errechnen ohne die Anzahl der Elemente zu kennen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371817</guid><dc:creator><![CDATA[Make-Grafik]]></dc:creator><pubDate>Sat, 14 Dec 2013 14:48:24 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit statischer Membervariable &#x2F; new Klasse on Sat, 14 Dec 2013 14:53:56 GMT]]></title><description><![CDATA[<p>Make-Grafik schrieb:</p>
<blockquote>
<p>Tatsache...<br />
Vielen dank ^^<br />
Lässt sich aber der index nicht trotzdem errechnen ohne die Anzahl der Elemente zu kennen?</p>
</blockquote>
<p>Ja, das geht:</p>
<pre><code>int index = sizeof(pArr) / sizeof(*pArr);
</code></pre>
<p>Aber benutze besser gleich std::vector. Ausserdem musst du in C++ nicht alle Objekte mit 'new' zu erzeugen.</p>
<p>Kann es sein, dass du von Java her kommst?</p>
<p>*Edit<br />
Es ist übrigens</p>
<pre><code>int main()
</code></pre>
<p>und nicht</p>
<pre><code>void main()
</code></pre>
<p><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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371818</guid><dc:creator><![CDATA[icarus2]]></dc:creator><pubDate>Sat, 14 Dec 2013 14:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit statischer Membervariable &#x2F; new Klasse on Sat, 14 Dec 2013 15:02:31 GMT]]></title><description><![CDATA[<p>Nicht wirklich ^^<br />
Ich programmiere Hauptsächlich in einer Skriptsprache namens AutoIt.<br />
Mit dieser wird für gewöhnlich nicht mit Pointern gearbeitet...<br />
C++ lerne ich jetzt erst noch nebenbei. Alles was Pointer betrifft ist noch ziemlich neu für mich.<br />
Die Klasse std::vector ist mir bekannt, trotzdem danke für den Hinweis.</p>
<p>€dit:<br />
Ich benutze Visual Studio Express 2012. Dort ist diese Syntax erlaubt.<br />
Weil ich meist immer das Return Schlüsselwort vergesse in der main Funktion,<br />
nehme ich direkt immer void weil's einfach einfacher für mich ist.<br />
Rückgabewerte vom Programm habe ich bisher noch nicht gebraucht ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371821</guid><dc:creator><![CDATA[Make-Grafik]]></dc:creator><pubDate>Sat, 14 Dec 2013 15:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit statischer Membervariable &#x2F; new Klasse on Sat, 14 Dec 2013 16:37:41 GMT]]></title><description><![CDATA[<p>Make-Grafik schrieb:</p>
<blockquote>
<p>Ich benutze Visual Studio Express 2012. Dort ist diese Syntax erlaubt.</p>
</blockquote>
<p>Dann funktioniert's aber nur da.</p>
<blockquote>
<p>Weil ich meist immer das Return Schlüsselwort vergesse in der main Funktion,<br />
nehme ich direkt immer void weil's einfach einfacher für mich ist.</p>
</blockquote>
<p>Dann ist ja gut, dass C++ nicht C ist, denn in C++ ist ein return 0 in der main implizit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2371828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371828</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 14 Dec 2013 16:37:41 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit statischer Membervariable &#x2F; new Klasse on Sat, 14 Dec 2013 17:07:22 GMT]]></title><description><![CDATA[<p>Make-Grafik schrieb:</p>
<blockquote>
<p>€dit:<br />
Ich benutze Visual Studio Express 2012. Dort ist diese Syntax erlaubt.</p>
</blockquote>
<p>Und zwar nur aus Gründen der Abwärtskompatibilität mit ururururalten Versionen von Visual C++. In Standard C++ ist void main() nicht erlaubt.</p>
<p>Make-Grafik schrieb:</p>
<blockquote>
<p>Weil ich meist immer das Return Schlüsselwort vergesse in der main Funktion,<br />
nehme ich direkt immer void weil's einfach einfacher für mich ist.<br />
Rückgabewerte vom Programm habe ich bisher noch nicht gebraucht ^^</p>
</blockquote>
<p>Für int main() gibt es die Ausnahmeregeleung, dass du auf das return dort drin auch verzichten darfst, was gleichwertig mit einem return 0; ist (in jeder anderen Funktion mit Returnwert vom Typ int wäre das natürlich nicht erlaubt). Verwend also besser einfach int main()... <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/2371831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2371831</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Sat, 14 Dec 2013 17:07:22 GMT</pubDate></item></channel></rss>