<?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[Klassen: Zähler für Objekete]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Aufgabe, bei der man eine Klasse mit verschiedenen Member und Memberfunktionen erstellen soll.<br />
Außerdem soll man einen Zähler einbauen, der die Anzahl der angelegten Objekte zählt. Ich weiß aber nicht, wie ich das realisieren kann. Ich hab schon ein bisschen rumgespielt aber es klappt nicht so richtig.<br />
Also Tipp habe ich bekommen, dass der Zähler systemweit erreichbar sein soll, ich ihn mit dem Konstruktor hochsetzen soll und mit dem Destruktor runtersetzen soll.<br />
Außerdem soll ich den Zählerstand ausgeben können.</p>
<p>Vereinfachte Darstellung:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

class ABC
{
public:
ABC();
void print();
int getx();
void setx(int);
~ABC();

private:
int x;
};

ABC::ABC(){x = 255;}

void ABC::print(){cout &lt;&lt; &quot;x = &quot; &lt;&lt; x &lt;&lt; endl;}

int ABC::getx(){return x;}

void ABC::setx(int a){x = a;}

ABC::~ABC(){}

int main()
{

ABC Objekt1;

Objekt1.print();

system(&quot;Pause&quot;);
return 0;
}
</code></pre>
<p>Ich hab die hier den Code vereinfacht, normal hat die Klasse noch mehr Member/Memberfunktionen.<br />
Ich würde jetzt gerne in der main Funktion ausgeben können: &quot;Es wurden X Objekte angelegt.&quot;</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291693/klassen-zähler-für-objekete</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 13:03:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291693.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Aug 2011 14:03:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:03:49 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Aufgabe, bei der man eine Klasse mit verschiedenen Member und Memberfunktionen erstellen soll.<br />
Außerdem soll man einen Zähler einbauen, der die Anzahl der angelegten Objekte zählt. Ich weiß aber nicht, wie ich das realisieren kann. Ich hab schon ein bisschen rumgespielt aber es klappt nicht so richtig.<br />
Also Tipp habe ich bekommen, dass der Zähler systemweit erreichbar sein soll, ich ihn mit dem Konstruktor hochsetzen soll und mit dem Destruktor runtersetzen soll.<br />
Außerdem soll ich den Zählerstand ausgeben können.</p>
<p>Vereinfachte Darstellung:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

class ABC
{
public:
ABC();
void print();
int getx();
void setx(int);
~ABC();

private:
int x;
};

ABC::ABC(){x = 255;}

void ABC::print(){cout &lt;&lt; &quot;x = &quot; &lt;&lt; x &lt;&lt; endl;}

int ABC::getx(){return x;}

void ABC::setx(int a){x = a;}

ABC::~ABC(){}

int main()
{

ABC Objekt1;

Objekt1.print();

system(&quot;Pause&quot;);
return 0;
}
</code></pre>
<p>Ich hab die hier den Code vereinfacht, normal hat die Klasse noch mehr Member/Memberfunktionen.<br />
Ich würde jetzt gerne in der main Funktion ausgeben können: &quot;Es wurden X Objekte angelegt.&quot;</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110150</guid><dc:creator><![CDATA[chris911]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:03:49 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:10:42 GMT]]></title><description><![CDATA[<p>Was du suchst, ist eine statische Membervariable. Mehr dazu im C++-Buch deiner Wahl <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/2110155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110155</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:10:42 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:12:58 GMT]]></title><description><![CDATA[<p>Du hast ja noch überhaupt nicht gemacht. Füg erstmal einen Zähler ein. Dieser muss für alle Instanzen der gleiche sein, also mach ihn global (pfui) oder static in der Klasse (besser). Und dann erklärt sich die Aufgabe doch schon von selber: Du schreibst alle Konstruktoren (denk an den Kopierkonstruktor!) selber und erhöhst dort diesen Zähler. Und im Destruktor erniedigst du ihn. Und Ausgaben bekommst du hoffentlich noch selber hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110159</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:12:58 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:20:02 GMT]]></title><description><![CDATA[<p>Bitte achte beim nächsten Posting darauf, dass du deinen Quelltext vernünftig einrückst. So, wie er jetzt formatiert ist, ist er kaum zu lesen.</p>
<p>Vermutlich hat der Aufgabensteller an sowas hier gedacht:</p>
<pre><code class="language-cpp">class SomeClass
{
   static unsigned int Counter;

public:
   SomeClass()
   {
      ++Counter;
   }

   ~SomeClass()
   {
      --Counter;
   }
}

unsigned int SomeClass::Counter = 0;
</code></pre>
<p>Über den Sinn und Unsinn kann man sich streiten. Der &quot;Trick&quot; an der Lösung ist, dass der Zähler <code>Counter</code> ein statisches Klassenelement ist, d.h. es gibt ihn genau ein einziges Mal und alle Objekte der Klassen teilen ihn sich.<br />
Den read-only Zugriff darauf zu implementieren sollte kein Problem sein, das solltest du hinkriegen. Ebenso das korrekte Verhalten des Kopierkonstruktors.</p>
<p>Edit:<br />
Initialisierung korrigiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110160</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:20:02 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:20:41 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class foo
{
private:
    // static variable belongs to the class, not to a specific instance
    static int counter_;

public:
    // on object creation increase the counter
    foo(void)
    {
        ++counter_;
    }

    // on object deletion decrease the counter
    ~foo(void)
    {
        --counter_;
    }

    // with this method you can query the counter...
    // call it this way:
    // foo::get_counter()
    static int get_counter(void) { return counter_; }
};

// definition and initialization of the counter
int foo::counter_ = 0;
</code></pre>
<p>EDIT: unsigned int als Typ geht natürlich auch^^</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18927">@DocShoe</a>: Deine Initialiserung direkt in der Klasse funktioniert IMHO nur bei statischen Konstanten.<br />
Variablen müssen extra initialisiert werden.</p>
<p>MSVC würde dir hier z.B. folgenden Fehler bringen:</p>
<blockquote>
<p>Compiler Error C2864<br />
'variable' : only static const integral data members can be initialized within a class</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2110161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110161</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:20:41 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Thu, 25 Aug 2011 11:03:43 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">///////////////////////////////////////////////////////////////////////////////

#include &lt;cstddef&gt;
#include &lt;iostream&gt;

template &lt;typename T&gt;
class object_counter
{
public:
    static void print_statistics()
    {
        std::cout &lt;&lt; &quot;**********************************************************&quot; &lt;&lt; std::endl;
        std::cout &lt;&lt; &quot;total &quot; &lt;&lt; total_ &lt;&lt; &quot; objects of type &quot; &lt;&lt; typeid(T).name() &lt;&lt; &quot; instantiated&quot; &lt;&lt; std::endl;
        std::cout &lt;&lt; &quot;current &quot; &lt;&lt; current_ &lt;&lt; &quot; objects of type &quot; &lt;&lt; typeid(T).name() &lt;&lt; &quot; instantiated&quot; &lt;&lt; std::endl;
        std::cout &lt;&lt; &quot;**********************************************************&quot; &lt;&lt; std::endl;
    }

protected:
    object_counter()
    {
        increment();
    }
    object_counter(const object_counter&amp;)
    {
        increment();
    }
    ~object_counter()
    {
        decrement();
    }

private:
    static void increment()
    {
        ++total_;
        ++current_;
    }
    static void decrement()
    {
        --current_;
    }
    static std::size_t total_;
    static std::size_t current_;
};

template &lt;typename T&gt;
std::size_t object_counter&lt;T&gt;::total_ = 0;

template &lt;typename T&gt;
std::size_t object_counter&lt;T&gt;::current_ = 0;

///////////////////////////////////////////////////////////////////////////////

struct A : object_counter&lt;A&gt; { };
struct B : object_counter&lt;B&gt; { };

int main()
{
    A::print_statistics();
    B::print_statistics();
    {
        for (std::size_t i = 0; i &lt; 3; ++i)
        {
            A a;
        }
        A::print_statistics();
        B::print_statistics();

        {
            A a;
            A aa = a;
            A aaa;
            aaa = a;
            aaa;
        }
        A::print_statistics();
        B::print_statistics();

        B b[16];

        A::print_statistics();
        B::print_statistics();
    }
    A::print_statistics();
    B::print_statistics();
}

///////////////////////////////////////////////////////////////////////////////
</code></pre>
<p><strong>EDIT</strong><br />
Copy- Constructor hinzugefügt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110167</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 25 Aug 2011 11:03:43 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:25:22 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18927">@DocShoe</a>: ISO C++ forbids in-class initialization of non-const static member ‘Counter’</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10459">@DrakoXP</a>: Auch noch nicht ganz:</p>
<pre><code class="language-cpp">int main()
{
  foo a;
  foo b = a;
  cout &lt;&lt; foo::get_counter() &lt;&lt; '\n';  // 1
}
</code></pre>
<p>edit: <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19131">@theta</a>: Gleiches Problem wie DrakoXP</p>
<p>Ist wohl doch nicht so ganz einfach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110168</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:25:22 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:44:24 GMT]]></title><description><![CDATA[<p>Verbesserte Version:</p>
<pre><code class="language-cpp">class foo
{
private:
    // static variable belongs to the class, not to a specific instance
    static int counter_;

public:
    // on object creation increase the counter
    foo(void)
    {
        ++counter_;
    }

    // on object deletion decrease the counter
    ~foo(void)
    {
        --counter_;
    }

    // copy constructor
    foo(foo const &amp; source)
    {
        ++counter_;
    }

    // with this method you can query the counter...
    // call it this way:
    // foo::get_counter()
    static int get_counter(void) { return counter_; }
};

// definition and initialization of the counter
int foo::counter_ = 0;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2110189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110189</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:44:24 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:45:18 GMT]]></title><description><![CDATA[<p>Ich habs jetzt so:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

class ABC
{
public:
ABC();
void print();
int getx();
void setx(int);
static unsigned int getcounter();
~ABC();

private:
int x;
static unsigned int counter;
};

ABC::ABC()
{
x = 255;
++counter;
}

void ABC::print()
{cout &lt;&lt; &quot;x = &quot; &lt;&lt; x &lt;&lt; endl;}

int ABC::getx()
{return x;}

void ABC::setx(int a)
{x = a;}

static unsigned int ABC::getcounter()
{return counter;}

ABC::~ABC()
{--counter;}

unsigned int ABC::counter = 0;

int main()
{

ABC Objekt1;

Objekt1.getcounter();

system(&quot;Pause&quot;);
return 0;
}
</code></pre>
<p>Der Compiler sagt aber, dass ich static nicht für Memberfunktionen verwenden darf, die ausserhalb der Klasse definiert sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110191</guid><dc:creator><![CDATA[chris911]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:45:18 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:49:23 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class counted
{
    static int counter;

public:
    counted() { ++counter; }
    ~counted() { --counter; }

    counted(const counted&amp;) { ++counter; }

    static int count() { return counter; }
};

int counted::counter = 0;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110194</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:49:23 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:52:04 GMT]]></title><description><![CDATA[<p>chris911 schrieb:</p>
<blockquote>
<p>Der Compiler sagt aber, dass ich static nicht für Memberfunktionen verwenden darf, die ausserhalb der Klasse definiert sind.</p>
</blockquote>
<p>Bei der Definition der Funktion außerhalb der Klasse hat das Schlüsselwort static dann auch nichts mehr verloren.<br />
Wer will, kapselt die Zählerfunktionalität in einer Basisklasse:</p>
<pre><code class="language-cpp">template &lt;typename&gt;
class Counted
{
protected:
    Counted() { ++counter; }
    Counted(const Counted&amp;) { ++counter; }
    ~Counted() { --counter; }
public:
    static unsigned getcounter() { return counter; }
private:
    static unsigned counter;
};
template &lt;typename T&gt;
unsigned Counted&lt;T&gt;::counter = 0;

class ABC : public Counted&lt;ABC&gt;
{
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2110198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110198</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:52:22 GMT]]></title><description><![CDATA[<p>chris911 schrieb:</p>
<blockquote>
<p>Der Compiler sagt aber, dass ich static nicht für Memberfunktionen verwenden darf, die ausserhalb der Klasse definiert sind.</p>
</blockquote>
<p>in Zeile 34 das static weglassen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110199</guid><dc:creator><![CDATA[Compiler911]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:52:22 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 14:54:17 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Wer will, kapselt die Zählerfunktionalität in einer Basisklasse:</p>
</blockquote>
<p>Wollte ich auch gerade vorschlagen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110203</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 24 Aug 2011 14:54:17 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 15:42:10 GMT]]></title><description><![CDATA[<p>Kapselung vom Zähler in eine Basisklasse will ich eigentlich nicht.</p>
<p>Habs jetzt so:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

class ABC
{
	public:

		static int counter;

		ABC(){++counter;}
		~ABC(){--counter;}

		ABC(const ABC&amp;){++counter;}

		static int count(){return counter;}		
};

int ABC::counter = 0;

int main()
{
	ABC Objekt1; //  1 Objekt wird angelegt
	cout &lt;&lt; Objekt1.counter &lt;&lt; endl; // Ausgabe = 1
	Objekt1.~ABC(); // 1. Objekt wird wieder gelöscht

	ABC Objekt2; // 1 Objekt wird angelegt 
	cout &lt;&lt; Objekt2.counter &lt;&lt; endl; // Ausgabe = 1

system(&quot;Pause&quot;);
return 0;
}
</code></pre>
<p>Ich musste aber counter in public reinstecken, weil ich sonst keinen Zugriff hätte ausserhalb der Klasse (in Zeile 18), wo ich ihn 0 setzte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110253</guid><dc:creator><![CDATA[chris911]]></dc:creator><pubDate>Wed, 24 Aug 2011 15:42:10 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 15:44:49 GMT]]></title><description><![CDATA[<p>Den Destruktor manuell aufrufen ist bei Stackobjekten ganz ganz böse. Und warum nimmst du nicht meine count() Methode, wenn du sie weiterverwendest?</p>
<p>(Übrigens bin ich davon überzeugt, dass es eine Möglichkeit gibt, die Variable private zu lassen. Ich weiß nur nicht wie.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110256</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 24 Aug 2011 15:44:49 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 16:23:40 GMT]]></title><description><![CDATA[<p>Wenn ich count nehme wird mir nur die Adresse angezeigt.</p>
<p>Wie kann ich die Objektanzahl anders heruntersetzen, bzw. was bingt mir dann das Heruntersetzen im Destruktor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110278</guid><dc:creator><![CDATA[chris911]]></dc:creator><pubDate>Wed, 24 Aug 2011 16:23:40 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 16:40:19 GMT]]></title><description><![CDATA[<p>chris911 schrieb:</p>
<blockquote>
<p>Wie kann ich die Objektanzahl anders heruntersetzen, bzw. was bingt mir dann das Heruntersetzen im Destruktor?</p>
</blockquote>
<p>Wenn du den Destruktor manuell aufrufst, nur um den Zähler herunterzusetzen, stimmt die gesamte Zählung nicht mehr (zumal das Objekt am Ende der Funktion nochmal zerstört wird). Normalerweise verläßt man sich darauf, daß das Objekt sich am Ende des Scope selbst zerstört:</p>
<pre><code class="language-cpp">int main()
{
  { // eigener Scope
    ABC Objekt1;
    cout&lt;&lt;ABC::count()&lt;&lt;endl;
  } // Ende des Scope - Objekt1 wird zerstört
  cout&lt;&lt;ABC::count()&lt;&lt;endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2110282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110282</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 24 Aug 2011 16:40:19 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Wed, 24 Aug 2011 16:41:05 GMT]]></title><description><![CDATA[<p>chris911 schrieb:</p>
<blockquote>
<p>Wie kann ich die Objektanzahl anders heruntersetzen,</p>
</blockquote>
<p>Guck dir mal Gültigkeitsbereiche an:</p>
<pre><code class="language-cpp">int main()
{
 {
    ABC Objekt1; //  1 Objekt wird angelegt
    cout &lt;&lt; ABC::counter &lt;&lt; endl; // Ausgabe = 1
 } // 1. Objekt wird wieder gelöscht
 ABC Objekt2; // 1 Objekt wird angelegt
 cout &lt;&lt; ABC::counter &lt;&lt; endl; // Ausgabe = 1

system(&quot;Pause&quot;);
return 0;
}
</code></pre>
<blockquote>
<p>Wenn ich count nehme wird mir nur die Adresse angezeigt.</p>
</blockquote>
<p>Du hast die Klammern beim Funktionsaufruf vergessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110283</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 24 Aug 2011 16:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Thu, 25 Aug 2011 09:51:16 GMT]]></title><description><![CDATA[<p>Ich hab jetzt zum Testen mal 100 Objekte mit einem array angelgt.<br />
Jetzt würde ich gerne ein Objekt davon löschen. Kann ich das nicht mit delete machen?</p>
<p>So hab ichs mir gedacht:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
using namespace std;

class ABC
{
	public:

		static int counter;

		ABC(){++counter;}
		~ABC(){cout &lt;&lt; &quot;Objekt zerstört!&quot; &lt;&lt; endl; --counter;}

		ABC(const ABC&amp;){++counter;}

		static int count(){return counter;}		
};

int ABC::counter = 0;

int main()
{

	ABC meineObjekte[100]; // Anlegen von 100 Objekten

	delete meineObjekte[3]; // Löschen eines Objektes

	ABC Objekt1;  // Objekt 101
	cout &lt;&lt; Objekt1.count() &lt;&lt; endl; // Ausgabe = 1 

system(&quot;Pause&quot;);
return 0;
}
</code></pre>
<p>Compiler-Fehler: 'ABC' kann nicht in void konvertiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110476</guid><dc:creator><![CDATA[chris911]]></dc:creator><pubDate>Thu, 25 Aug 2011 09:51:16 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Thu, 25 Aug 2011 09:53:37 GMT]]></title><description><![CDATA[<p>Nein, mit delete löscht man Heap-Speicher...<br />
Am besten holst du dir mal ein gutes C++-Buch und arbeitest es durch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110480</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 25 Aug 2011 09:53:37 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Zähler für Objekete on Thu, 25 Aug 2011 11:04:18 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a></p>
<blockquote>
<p>edit: <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19131">@theta</a>: Gleiches Problem wie DrakoXP</p>
</blockquote>
<p>Welches Problem?</p>
<p><strong>EDIT</strong><br />
Ah, i see...</p>
<p><strong>EDIT2</strong><br />
Code im orginal Post korrigiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2110510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2110510</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 25 Aug 2011 11:04:18 GMT</pubDate></item></channel></rss>