<?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[Dynamisches Objekt (Intanz erzeugen)]]></title><description><![CDATA[<pre><code>template&lt;unsigned price&gt;
Getraenkeautomat&lt; price&gt;::Getraenkeautomat(const string&amp; gt, int stk, const Person&amp; Pf)
</code></pre>
<p>Wie erstelle ich eine dynamische Instanz dieser Klasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/328766/dynamisches-objekt-intanz-erzeugen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 07:59:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328766.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 26 Oct 2014 11:03:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 11:03:59 GMT]]></title><description><![CDATA[<pre><code>template&lt;unsigned price&gt;
Getraenkeautomat&lt; price&gt;::Getraenkeautomat(const string&amp; gt, int stk, const Person&amp; Pf)
</code></pre>
<p>Wie erstelle ich eine dynamische Instanz dieser Klasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2424072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424072</guid><dc:creator><![CDATA[TemplateQ]]></dc:creator><pubDate>Sun, 26 Oct 2014 11:03:59 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 11:10:39 GMT]]></title><description><![CDATA[<p>Wie würdest du es denn machen, wenn es nicht &quot;dynamisch&quot; sen soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2424076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424076</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 26 Oct 2014 11:10:39 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 11:15:01 GMT]]></title><description><![CDATA[<pre><code>Getraenkeautomat&lt;2&gt; NewAutomat(&quot;Coca Cola&quot;, 12, &amp;NewPerson);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2424078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424078</guid><dc:creator><![CDATA[TemplateQ]]></dc:creator><pubDate>Sun, 26 Oct 2014 11:15:01 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 11:19:45 GMT]]></title><description><![CDATA[<p>Wo ist jetzt das Problem, es &quot;dynamisch&quot; zu machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2424080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424080</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 26 Oct 2014 11:19:45 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 11:22:40 GMT]]></title><description><![CDATA[<p>Ich erhalte eine Fehlermeldung undzwar &lt;</p>
<blockquote>
<p>Fehler 2 error C2661: 'Getraenkeautomat&lt;1&gt;::Getraenkeautomat': Keine überladene Funktion akzeptiert 3 Argumente c:\users\ippo\documents\visual studio 2013\projects\getraenkeautomat\getraenkeautomat\main.cpp 11 1 Getraenkeautomat</p>
</blockquote>
<p>hier ist die Header Datei dazu</p>
<pre><code>#ifndef GETRAENKEAUTOMAT_H_INCLUDED
#define GETRAENKEAUTOMAT_H_INCLUDED
#include &lt;string&gt;
#include &lt;thread&gt;
#include &lt;chrono&gt;
#include &lt;iostream&gt;
#include &quot;Person.h&quot;
using namespace std;
// Template function überdenken
template&lt;unsigned price&gt;
class Getraenkeautomat
{
public:
	Getraenkeautomat(const string&amp; gt, unsigned stk, const Person&amp; Pf);
	Getraenkeautomat() = default;
	void print() const;
	void getraenkKaufen(int);
	~Getraenkeautomat();
	bool isAviable() const { return empty; }
private:
	int preis = 0;
	bool empty = true;
	unsigned getraenkeanzahl = 50;
	string getraenk = &quot;Cola&quot;;
	Person&amp; ReferencePerson;
};

// Konstruktor der Klasse - Die Attribute mit Standartwerten initialisieren
template&lt;unsigned price&gt;
Getraenkeautomat&lt; price&gt;::Getraenkeautomat(const string&amp; gt, unsigned stk, const Person&amp; Pf)
	: getraenk(gt), empty(false), getraenkeanzahl(stk), preis(price), ReferencePerson(Pf)
{
	cout &lt;&lt; getraenk &lt;&lt; &quot; Getränkeautomat wurde aufgestellt.&quot; &lt;&lt; endl;
}

// Person die dinge Kaufen wird mit übergeben
template&lt;unsigned price&gt;
void Getraenkeautomat&lt;price&gt;::print() const
{
	cout &lt;&lt; &quot;-----------------------------------------&quot;;
	cout &lt;&lt; &quot;\nGetränk     :&quot; &lt;&lt; getraenk;
	cout &lt;&lt; &quot;\nAnzahl Stück:&quot; &lt;&lt; anzahl;
	cout &lt;&lt; &quot;\nEinzel Preis:&quot; &lt;&lt; preis;
	cout &lt;&lt; &quot;-----------------------------------------\n&quot;;
}

// Getränkeautomaten Klasse- void function
template&lt;unsigned price&gt;
void Getraenkeautomat&lt;price&gt;::getraenkKaufen(int anz)
{
	if (getraenkeanzahl == 0)
	{
		empty = true;
		break;
		cout &lt;&lt; &quot;Programm wird in kürze geschlossen.\n&quot;;
		this_thread::sleep_for(chrono::seconds(10));
		exit(1); // Programm schließen
	}
	else
	{
		unsigned getraenkmalpreis = preis* anz;
		if (ReferencePerson.guthaben &lt; getraenkmalpreis)
		{
			cout &lt;&lt; &quot;Sie haben nicht soviel guthaben\n&quot;;
			cout &lt;&lt; &quot;Versuchen sie es mit etwas weniger.\n&quot;;
		}
		else
		{
			ReferencePerson.guthaben -= getraenkmalpreis;
			getraenkeanzahl -= anz;
		}
	}
}

// Destruktor der Klasse- Konstrukt
template&lt;unsigned price&gt;
Getraenkeautomat&lt; price&gt;::~Getraenkeautomat()
{
	cout &lt;&lt; getraenk &lt;&lt; &quot; Getraenkeautomat wurde zerstört.\n&quot;;
}
#endif // GETRAENKEAUTOMAT_H_INCLUDED
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2424081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424081</guid><dc:creator><![CDATA[TemplateQ]]></dc:creator><pubDate>Sun, 26 Oct 2014 11:22:40 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 11:24:24 GMT]]></title><description><![CDATA[<p>Hier die Person Header Datei</p>
<pre><code>#ifndef PERSON_H_INCLUDED
#define PERSON_H_INCLUDED
#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;
struct Person
{
	Person(const string&amp; n, double gth);
	double guthaben;
	string name;
};

Person::Person(const string&amp; n, double gth) : name(n)
{
	cout &lt;&lt; &quot;Person namens &quot; &lt;&lt; name &lt;&lt; &quot; wurde erzeugt.\n&quot;;
}

#endif // PERSON_H_INCLUDED
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2424082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424082</guid><dc:creator><![CDATA[TemplateQ]]></dc:creator><pubDate>Sun, 26 Oct 2014 11:24:24 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 11:28:28 GMT]]></title><description><![CDATA[<p>Und &quot;nicht dynamisch&quot; lässt sich damit übersetzen?<br />
Wie sieht &quot;dynamisch&quot; aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2424083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424083</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 26 Oct 2014 11:28:28 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 11:33:11 GMT]]></title><description><![CDATA[<p>Und wieso zeigst du nicht den Versuch das Objekt &quot;dynamisch&quot; zu erzeugen, d.h. die main.cpp?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2424085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424085</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 26 Oct 2014 11:33:11 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 11:40:52 GMT]]></title><description><![CDATA[<p>Achsoo jetzt sehe ich den Fehler gefunden.<br />
Ich habe in der Getraenkeautomat Header Datei als letzten Parameter einen Zeiger auf die Person zurück geben(Konstruktor) müssen und keine Referenz das Problem hat sich nun erledigt.</p>
<p>Jetzt muss ich die Klasse aber umschreiben da ich einige Fehler gemacht habe wie mir scheint.</p>
<p>Danke für deine Hilfe <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/2424089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424089</guid><dc:creator><![CDATA[TemplateQ]]></dc:creator><pubDate>Sun, 26 Oct 2014 11:40:52 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 12:27:09 GMT]]></title><description><![CDATA[<p>So hab die Klasse nun vollständig das Ergebnis ist folgendes (für diejenigen denen es interessiert)</p>
<p>Main.cpp</p>
<pre><code>#include &quot;Person.h&quot;
#include &quot;Getraenkeautomat.h&quot;
/* Programm muss noch beendet werden */

int main(int argc, char* argv[])
{
	// Personen Objekt erzeugen
	Person* NewPerson = new Person(&quot;Talon&quot;, 200);
	// Getraenke Automat erzeugen
	Getraenkeautomat&lt;1&gt; *NewAutomat = new Getraenkeautomat&lt;1&gt;(&quot;Fanta &quot;, 20, NewPerson);

	if (NewAutomat-&gt;getGetraenke() &gt; 0)
	{
		while (!NewAutomat-&gt;isAviable())
		{
			if (NewAutomat-&gt;getGetraenke() &gt; 0)
			{
				NewAutomat-&gt;print();
				unsigned anzahl;
				cin.tie(&amp;cout);
				cout &lt;&lt; &quot;\nWie viele Stücke wollen sie Kaufen?:&quot;;
				cin &gt;&gt; anzahl;
				NewAutomat-&gt;getraenkKaufen(anzahl);
				cin.sync();
				cin.clear();
			}
			else
			{
				cout &lt;&lt; &quot;\nGetraenke Automat ist Leer.&quot;;
				cout &lt;&lt; &quot;\nProgramm wird beendet.!&quot;;
				this_thread::sleep_for(chrono::seconds(10));
			}
		}
	}
	else
	{
		cout &lt;&lt; &quot;\nGetraenke Automat ist Leer.\n&quot;;
		cout &lt;&lt; &quot;Programm wird beendet.!&quot;;
		this_thread::sleep_for(chrono::seconds(10));
	}

	delete NewPerson; // Neue Person löschen
	delete NewAutomat; // Getränke Automat löschen
}
</code></pre>
<p>Getraenkeautomat Header</p>
<pre><code>#ifndef GETRAENKEAUTOMAT_H_INCLUDED
#define GETRAENKEAUTOMAT_H_INCLUDED
#include &lt;string&gt;
#include &lt;thread&gt;
#include &lt;chrono&gt;
#include &lt;iostream&gt;
#include &quot;Person.h&quot;
using namespace std;
// Template function überdenken
template&lt;unsigned price&gt;
class Getraenkeautomat
{
public:
	Getraenkeautomat(const string&amp; gt, unsigned stk, Person* Pf);
	Getraenkeautomat() : empty(true), preis(0), getraenk(&quot;&quot;), ReferencePerson(nullptr) { }
	void print() const;
	void getraenkKaufen(unsigned);
	~Getraenkeautomat();
	const unsigned getGetraenke() const { return getraenkeanzahl; }
	bool isAviable() const { return empty; }
private:
	int preis;
	bool empty;
	unsigned getraenkeanzahl;
	string getraenk;
	Person* ReferencePerson;
};

// Konstruktor der Klasse - Die Attribute mit Standartwerten initialisieren
template&lt;unsigned price&gt;
Getraenkeautomat&lt; price&gt;::Getraenkeautomat(const string&amp; gt, unsigned stk,  Person* Pf)
	: getraenk(gt), empty(false), getraenkeanzahl(stk), preis(price), ReferencePerson(Pf)
{
	cout &lt;&lt; getraenk &lt;&lt; &quot; Getränkeautomat wurde aufgestellt.&quot; &lt;&lt; endl;
}

// Person die dinge Kaufen wird mit übergeben
template&lt;unsigned price&gt;
void Getraenkeautomat&lt;price&gt;::print() const
{
	cout &lt;&lt; &quot;-----------------------------------------&quot;;
	cout &lt;&lt; &quot;\nGetränk     :&quot; &lt;&lt; getraenk;
	cout &lt;&lt; &quot;\nAnzahl Stück:&quot; &lt;&lt; getraenkeanzahl;
	cout &lt;&lt; &quot;\nPreis für 1 :&quot; &lt;&lt; preis;
	cout &lt;&lt; &quot;\n-----------------------------------------\n&quot;;
}

// Getränkeautomaten Klasse- void function
template&lt;unsigned price&gt;
void Getraenkeautomat&lt;price&gt;::getraenkKaufen(unsigned anz)
{
	if (getraenkeanzahl == 0)
	{
		empty = true;
		cout &lt;&lt; &quot;\nGetränke Automat ist Leer.\n&quot;;
		cout &lt;&lt; &quot;Programm wird beendet!\n&quot;;
		this_thread::sleep_for(chrono::seconds(10));
	}
	else
	{
		if (anz &gt; getraenkeanzahl)
		{
			cout &lt;&lt; &quot;\nZu große getränke Anzahl.\n&quot; &lt;&lt; endl;
			cout &lt;&lt; &quot;Schleife wird neugestartet.\n&quot; &lt;&lt; endl;
		}
		else if (ReferencePerson-&gt;guthaben &lt; (anz* preis))
		{
			cout &lt;&lt; &quot;\nNicht genug guthaben für den kauf von &quot;
				&lt;&lt; anz &lt;&lt; &quot; &quot; &lt;&lt; getraenk &lt;&lt; &quot;(s)\n&quot; &lt;&lt; endl;
		}
		else
		{
			ReferencePerson-&gt;guthaben -= price*anz;
			getraenkeanzahl -= anz;
			cout &lt;&lt; endl &lt;&lt;  ReferencePerson-&gt;name &lt;&lt; &quot; hat erfolgreich &quot; &lt;&lt; anz
				&lt;&lt; getraenk &lt;&lt; &quot;(e/r/s)&quot; &lt;&lt; &quot; gekauft.&quot; &lt;&lt; endl;
		}
	}
}

// Destruktor der Klasse- Konstrukt
template&lt;unsigned price&gt;
Getraenkeautomat&lt; price&gt;::~Getraenkeautomat()
{
	cout &lt;&lt; getraenk &lt;&lt; &quot; Getraenkeautomat wurde zerstört.\n&quot;;
}
#endif // GETRAENKEAUTOMAT_H_INCLUDED
</code></pre>
<p>Person Header</p>
<pre><code>#ifndef PERSON_H_INCLUDED
#define PERSON_H_INCLUDED
#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;
struct Person
{
	Person(const string&amp; n, unsigned gth);
	unsigned guthaben;
	string name;
};

Person::Person(const string&amp; n, unsigned gth) : name(n)
{
	cout &lt;&lt; &quot;Person namens &quot; &lt;&lt; name &lt;&lt; &quot; wurde erzeugt.\n&quot;;
}

#endif // PERSON_H_INCLUDED
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2424097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424097</guid><dc:creator><![CDATA[TemplateQ]]></dc:creator><pubDate>Sun, 26 Oct 2014 12:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 12:41:19 GMT]]></title><description><![CDATA[<p>Bleibt noch die Frage wieso du das Objekt überhaupt dynamisch erzeugen musstest und dann auch noch via rohem new und delete, was man in modernem C++ nicht machen sollte!<br />
Und da du ja schon this_thread verwendest, haste auch unique_ptr um es richtig zu machen. Wobei das dynamische hier sowieso überflüssig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2424101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424101</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 26 Oct 2014 12:41:19 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 13:05:02 GMT]]></title><description><![CDATA[<p>Ich wollte nur mal testen ob ich das Prinzip verstanden habe, deshalb habe ich eine dynamische Instanz verwendet^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2424105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424105</guid><dc:creator><![CDATA[TemplateQ]]></dc:creator><pubDate>Sun, 26 Oct 2014 13:05:02 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Sun, 26 Oct 2014 13:09:53 GMT]]></title><description><![CDATA[<p>TemplateQ schrieb:</p>
<blockquote>
<p>Ich wollte nur mal testen ob ich das Prinzip verstanden habe, deshalb habe ich eine dynamische Instanz verwendet^^</p>
</blockquote>
<p>Gut dann teste das mal mit unique_ptr, denn wie schon gesagt, rohes new sollte man nicht verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2424108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424108</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 26 Oct 2014 13:09:53 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisches Objekt (Intanz erzeugen) on Mon, 27 Oct 2014 09:25:26 GMT]]></title><description><![CDATA[<p>'unique_ptr' hatte ich bisher noch nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Das kommt erst in den nächsten Kapitel dran.<br />
Aber trotzdem kann ich mal einen blick darauf werfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2424269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2424269</guid><dc:creator><![CDATA[TemplateQ]]></dc:creator><pubDate>Mon, 27 Oct 2014 09:25:26 GMT</pubDate></item></channel></rss>