<?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[stack als klassen-template - probleme]]></title><description><![CDATA[<p>hy!<br />
also ich habe vor einen stack als klassen-template umzusetzen (besser gesagt mein prof will das <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="😉"
    /> )<br />
ist mein erster versuch an templates, nur irgendwie will mein compiler mir das ganze nicht übersetzen. er bringt auch nur wirre fehlermeldungen, die mir nicht helfen auf die spur des problems zu kommen. ich denke für euch wird das problem wahrscheinlich auf den ersten blick erkennbar sein <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>
<pre><code class="language-cpp">// Stack.h //

#ifndef STACK_H_
#define STACK_H_

template&lt;class ANY_TYPE&gt;
class Stack {
public:
	Stack(void);
	~Stack(void);
	bool push(const ANY_TYPE &amp;);
	bool top(ANY_TYPE &amp;);
	bool pop(void);
	bool is_empty(void);
private:
	ANY_TYPE *stack_pointer;
	int count;
};

#endif // STACK_H_
</code></pre>
<pre><code class="language-cpp">// Stack.cpp //

#include &quot;Stack.h&quot;

template &lt;class ANY_TYPE&gt;
Stack&lt;ANY_TYPE&gt;::Stack(void) {
	stack_pointer = NULL;
	count = 0;
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::push(const ANY_TYPE &amp;element) {
	stack_pointer[count] = new ANY_TYPE;
	if(!stack_pointer[count])			// falls Heapspeichervoll
		return false;
	else {
		stack_pointer[count] = element;
		stack_pointer[++count] = NULL;
		return true;
	}
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::top(ANY_TYPE &amp;element) {	// liest erstes element
	if(is_empty())
		return false;
	else {
		element = stack_pointer[--count];	// gibt erstes element zurueck
		count++;
		return true;
	}
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::pop(void) {				// loescht erstes element
	if(is_empty())
		return false;
	else {
		delete stack_pointer[--count];
		stack_pointer[count] = NULL;	// wird geloescht und dann NULL gesetzt
		return true;
	}
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::is_empty(void) {
	if(stack_pointer[0] == NULL)	// prueft ob erstes element vorhanden
		return true;
	else
		return false;
}

template &lt;class ANY_TYPE&gt;
Stack&lt;ANY_TYPE&gt;::~Stack(void) {
	int i;
	for(i = count - 1; i &lt;= 0; i--)
		delete stack_pointer[i];
}
</code></pre>
<pre><code class="language-cpp">// stacktest.cpp //

#include &lt;iostream&gt;
#include &quot;Stack.h&quot;
using namespace std;

int main(void) {
	float test;

	cout &lt;&lt; &quot;stack mit templates&quot; &lt;&lt; endl;

	Stack&lt;float&gt; *float_stack;
	float_stack = new Stack&lt;float&gt;();
	float_stack-&gt;push(3.1415);
	float_stack-&gt;push(2.322);
	float_stack-&gt;push(1.333);
	float_stack-&gt;top(test);

	cout &lt;&lt; &quot;1.333: ... &quot; &lt;&lt; test &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>der compiler spuckt immer folgendes aus:</p>
<blockquote>
<p>------ Erstellen gestartet: Projekt: uebung_07_templates, Konfiguration: Debug Win32 ------<br />
Kompilieren...<br />
main.cpp<br />
c:\eigene dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\main.cpp(20) : warning C4700: Die nicht initialisierte lokale Variable &quot;test&quot; wurde verwendet.<br />
Verknüpfen...<br />
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: bool __thiscall Stack&lt;float&gt;::is_empty(void)&quot; (?is_empty@?Stack@M@@QAE\_NXZ)" in Funktion "_main".  
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: \_\_thiscall Stack<float>::Stack<float>(void)" (??0?Stack@M@@QAE@XZ)&quot; in Funktion &quot;_main&quot;.<br />
C:\Eigene Dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\Debug\uebung_07_templates.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.<br />
Das Buildprotokoll wurde unter &quot;file://c:\Eigene Dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\Debug\BuildLog.htm&quot; gespeichert.<br />
uebung_07_templates - 3 Fehler, 1 Warnung(en)<br />
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========</p>
</blockquote>
<p>Würde mich freuen, wenn ihr kurz drüberrutschen könntet <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/topic/216185/stack-als-klassen-template-probleme</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 20:12:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216185.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Jun 2008 10:11:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to stack als klassen-template - probleme on Fri, 20 Jun 2008 10:32:44 GMT]]></title><description><![CDATA[<p>hy!<br />
also ich habe vor einen stack als klassen-template umzusetzen (besser gesagt mein prof will das <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="😉"
    /> )<br />
ist mein erster versuch an templates, nur irgendwie will mein compiler mir das ganze nicht übersetzen. er bringt auch nur wirre fehlermeldungen, die mir nicht helfen auf die spur des problems zu kommen. ich denke für euch wird das problem wahrscheinlich auf den ersten blick erkennbar sein <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>
<pre><code class="language-cpp">// Stack.h //

#ifndef STACK_H_
#define STACK_H_

template&lt;class ANY_TYPE&gt;
class Stack {
public:
	Stack(void);
	~Stack(void);
	bool push(const ANY_TYPE &amp;);
	bool top(ANY_TYPE &amp;);
	bool pop(void);
	bool is_empty(void);
private:
	ANY_TYPE *stack_pointer;
	int count;
};

#endif // STACK_H_
</code></pre>
<pre><code class="language-cpp">// Stack.cpp //

#include &quot;Stack.h&quot;

template &lt;class ANY_TYPE&gt;
Stack&lt;ANY_TYPE&gt;::Stack(void) {
	stack_pointer = NULL;
	count = 0;
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::push(const ANY_TYPE &amp;element) {
	stack_pointer[count] = new ANY_TYPE;
	if(!stack_pointer[count])			// falls Heapspeichervoll
		return false;
	else {
		stack_pointer[count] = element;
		stack_pointer[++count] = NULL;
		return true;
	}
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::top(ANY_TYPE &amp;element) {	// liest erstes element
	if(is_empty())
		return false;
	else {
		element = stack_pointer[--count];	// gibt erstes element zurueck
		count++;
		return true;
	}
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::pop(void) {				// loescht erstes element
	if(is_empty())
		return false;
	else {
		delete stack_pointer[--count];
		stack_pointer[count] = NULL;	// wird geloescht und dann NULL gesetzt
		return true;
	}
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::is_empty(void) {
	if(stack_pointer[0] == NULL)	// prueft ob erstes element vorhanden
		return true;
	else
		return false;
}

template &lt;class ANY_TYPE&gt;
Stack&lt;ANY_TYPE&gt;::~Stack(void) {
	int i;
	for(i = count - 1; i &lt;= 0; i--)
		delete stack_pointer[i];
}
</code></pre>
<pre><code class="language-cpp">// stacktest.cpp //

#include &lt;iostream&gt;
#include &quot;Stack.h&quot;
using namespace std;

int main(void) {
	float test;

	cout &lt;&lt; &quot;stack mit templates&quot; &lt;&lt; endl;

	Stack&lt;float&gt; *float_stack;
	float_stack = new Stack&lt;float&gt;();
	float_stack-&gt;push(3.1415);
	float_stack-&gt;push(2.322);
	float_stack-&gt;push(1.333);
	float_stack-&gt;top(test);

	cout &lt;&lt; &quot;1.333: ... &quot; &lt;&lt; test &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>der compiler spuckt immer folgendes aus:</p>
<blockquote>
<p>------ Erstellen gestartet: Projekt: uebung_07_templates, Konfiguration: Debug Win32 ------<br />
Kompilieren...<br />
main.cpp<br />
c:\eigene dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\main.cpp(20) : warning C4700: Die nicht initialisierte lokale Variable &quot;test&quot; wurde verwendet.<br />
Verknüpfen...<br />
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;public: bool __thiscall Stack&lt;float&gt;::is_empty(void)&quot; (?is_empty@?Stack@M@@QAE\_NXZ)" in Funktion "_main".  
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: \_\_thiscall Stack<float>::Stack<float>(void)" (??0?Stack@M@@QAE@XZ)&quot; in Funktion &quot;_main&quot;.<br />
C:\Eigene Dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\Debug\uebung_07_templates.exe : fatal error LNK1120: 2 nicht aufgelöste externe Verweise.<br />
Das Buildprotokoll wurde unter &quot;file://c:\Eigene Dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\Debug\BuildLog.htm&quot; gespeichert.<br />
uebung_07_templates - 3 Fehler, 1 Warnung(en)<br />
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========</p>
</blockquote>
<p>Würde mich freuen, wenn ihr kurz drüberrutschen könntet <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/1532752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532752</guid><dc:creator><![CDATA[ex.aveal]]></dc:creator><pubDate>Fri, 20 Jun 2008 10:32:44 GMT</pubDate></item><item><title><![CDATA[Reply to stack als klassen-template - probleme on Fri, 20 Jun 2008 10:39:34 GMT]]></title><description><![CDATA[<p>Die Implementierung _muss_ im Header stehen sonst klappts nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532763</guid><dc:creator><![CDATA[templater]]></dc:creator><pubDate>Fri, 20 Jun 2008 10:39:34 GMT</pubDate></item><item><title><![CDATA[Reply to stack als klassen-template - probleme on Fri, 20 Jun 2008 10:47:23 GMT]]></title><description><![CDATA[<p>was? die ganze Stack.ccp muss ich KOMPLETT in den header rein?</p>
<p>also hab die Stack.cpp geloescht und habe nur noch folgende Stack.h</p>
<pre><code class="language-cpp">// Stack.h // uebung 07 templates // wolfgang franz // 906787

#ifndef STACK_H_
#define STACK_H_

template&lt;class ANY_TYPE&gt;
class Stack {
public:
	Stack(void);
	~Stack(void);
	bool push(const ANY_TYPE &amp;);
	bool top(ANY_TYPE &amp;);
	bool pop(void);
	bool is_empty(void);
private:
	ANY_TYPE *stack_pointer;
	int count;
};

template &lt;class ANY_TYPE&gt;
Stack&lt;ANY_TYPE&gt;::Stack(void) {
	stack_pointer = NULL;
	count = 0;
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::push(const ANY_TYPE &amp;element) {
	stack_pointer[count] = new ANY_TYPE;
	if(!stack_pointer[count])			// falls Heapspeichervoll
		return false;
	else {
		stack_pointer[count] = element;
		stack_pointer[++count] = NULL;
		return true;
	}
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::top(ANY_TYPE &amp;element) {	// liest erstes element
	if(is_empty())
		return false;
	else {
		element = stack_pointer[--count];	// gibt erstes element zurueck
		count++;
		return true;
	}
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::pop(void) {				// loescht erstes element
	if(is_empty())
		return false;
	else {
		delete stack_pointer[--count];
		stack_pointer[count] = NULL;	// wird geloescht und dann NULL gesetzt
		return true;
	}
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::is_empty(void) {
	if(stack_pointer[0] == NULL)	// prueft ob erstes element vorhanden
		return true;
	else
		return false;
}

template &lt;class ANY_TYPE&gt;
Stack&lt;ANY_TYPE&gt;::~Stack(void) {
	int i;
	for(i = count - 1; i &lt;= 0; i--)
		delete stack_pointer[i];
}

#endif // STACK_H_
</code></pre>
<p>... motzt mich der compiler immernoch an:</p>
<blockquote>
<p>------ Erstellen gestartet: Projekt: uebung_07_templates, Konfiguration: Debug Win32 ------<br />
Kompilieren...<br />
Stack.cpp<br />
Code wird generiert...<br />
Kompilieren...<br />
main.cpp<br />
c:\eigene dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\main.cpp(14) : warning C4305: 'Argument': Verkürzung von 'double' in 'const float'<br />
c:\eigene dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\main.cpp(15) : warning C4305: 'Argument': Verkürzung von 'double' in 'const float'<br />
c:\eigene dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\main.cpp(16) : warning C4305: 'Argument': Verkürzung von 'double' in 'const float'<br />
c:\eigene dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\stack.h(29) : error C2440: '=': 'float *' kann nicht in 'float' konvertiert werden<br />
Es gibt keinen Kontext, in dem diese Konvertierung möglich ist<br />
c:\eigene dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\stack.h(28): Bei der Kompilierung der Klassen-template der bool Stack&lt;ANY_TYPE&gt;::push(const ANY_TYPE &amp;)-Memberfunktion<br />
with<br />
[<br />
ANY_TYPE=float<br />
]<br />
c:\eigene dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\main.cpp(13): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;Stack&lt;ANY_TYPE&gt;&quot;.<br />
with<br />
[<br />
ANY_TYPE=float<br />
]<br />
Code wird generiert...<br />
Das Buildprotokoll wurde unter &quot;file://c:\Eigene Dateien\docs\fh\it4\informatik 3\uebungen\uebung_07_templates\uebung_07_templates\Debug\BuildLog.htm&quot; gespeichert.<br />
uebung_07_templates - 1 Fehler, 3 Warnung(en)<br />
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1532765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532765</guid><dc:creator><![CDATA[ex.aveal]]></dc:creator><pubDate>Fri, 20 Jun 2008 10:47:23 GMT</pubDate></item><item><title><![CDATA[Reply to stack als klassen-template - probleme on Fri, 20 Jun 2008 10:49:06 GMT]]></title><description><![CDATA[<p>Edit:<br />
Da ist noch ein Fehler in deinem code:</p>
<pre><code class="language-cpp">ANY_TYPE *stack_pointer;
...
    stack_pointer[count] = new ANY_TYPE;
</code></pre>
<p>1. damit das klappt, müsste der stack_pointer vom Typ ANY_TYPE ** sein (2 sterne).<br />
2. du hast kein speicher für den pointer angefordert. der zugriff mit dem index gibt garantiert einen zugriffsfehler.</p>
<p>ich vermute, dass du die stl nicht verwenden darfst. dann musst du eine verkettete liste nehmen:</p>
<pre><code class="language-cpp">// in der klasse (private)
struct node
{
    ANY_TYPE data;
    node *next;
};
//
//
// push :
node *temp = new node;
temp-&gt;data = element;
temp-&gt;next = stack_pointer;
stackpointer = temp;
//
//
// top :
if (stack_pointer)
    element = stack_pointer-&gt;data;
else
    // fehler
//
//
// pop :
node *temp = stack_pointer;
stack_pointer = stack_pointer-&gt;next;
delete temp;
//
//
//
</code></pre>
<p>habs nicht getestet müsste aber klappen so</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532769</guid><dc:creator><![CDATA[templater]]></dc:creator><pubDate>Fri, 20 Jun 2008 10:49:06 GMT</pubDate></item><item><title><![CDATA[Reply to stack als klassen-template - probleme on Fri, 20 Jun 2008 10:57:45 GMT]]></title><description><![CDATA[<p>okay, hab den stack_pointer nun als ANY_TYPE = **stack_pointer; initialisiert. hatte ich auch bereits am anfang, aber ich dachte vllt liegt da das problem.</p>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox46667" checked="true" /><label for="checkbox46667">die &quot;liste&quot;</label></div></p>
<p>oder bin ich jetzt vollkommen aufm falschen dampfer?! <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532772</guid><dc:creator><![CDATA[ex.aveal]]></dc:creator><pubDate>Fri, 20 Jun 2008 10:57:45 GMT</pubDate></item><item><title><![CDATA[Reply to stack als klassen-template - probleme on Fri, 20 Jun 2008 11:03:40 GMT]]></title><description><![CDATA[<blockquote>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox46668" checked="true" /><label for="checkbox46668">die &quot;liste&quot;</label></div></p>
</blockquote>
<p>Damit erfüllst Du aber nich die folgende Anforderung:</p>
<p>ex.aveal schrieb:</p>
<blockquote>
<p>ich soll das ganze als verkettete liste lösen</p>
</blockquote>
<p>Schau Dir am besten nochmal im Datenstrukturen-Skript den Unterschied zwischen einem Feld (Array) und einer (einfach/doppelt) verketteten Liste an <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/1532774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532774</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 20 Jun 2008 11:03:40 GMT</pubDate></item><item><title><![CDATA[Reply to stack als klassen-template - probleme on Fri, 20 Jun 2008 11:08:27 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<blockquote>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox46669" checked="true" /><label for="checkbox46669">die &quot;liste&quot;</label></div></p>
</blockquote>
<p>Damit erfüllst Du aber nich die folgende Anforderung:</p>
<p>ex.aveal schrieb:</p>
<blockquote>
<p>ich soll das ganze als verkettete liste lösen</p>
</blockquote>
<p>Schau Dir am besten nochmal im Datenstrukturen-Skript den Unterschied zwischen einem Feld (Array) und einer (einfach/doppelt) verketteten Liste an <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>
</blockquote>
<p>okay, ja, mir wirds jetzt langsam klar. ich hab mich da so reingesteigert, dass ich garnich mehr genau drauf geachtet hab, wies in der aufgabenstellung steht. dachte nur noch an liste, irgendne liste.</p>
<p>mach das ganze jetzt über die structure, mal schaun ob ichs hinbekomm.<br />
mich würde aber trotzdem tierisch interessieren, wie ich es denn jetzt in meinem beispiel machen müßte.<br />
müßte ich ...</p>
<pre><code class="language-cpp">ANY_TYPE **stack_pointer = new ANY_TYPE[100];
</code></pre>
<p>(100 halt einfach mal als größe des Stacks)</p>
<p>aber dann funzt es irgendwie auch nicht. ich hoffe ihr wisst was ich meine, denn ich bin selber schon total verwirrt <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/1532776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532776</guid><dc:creator><![CDATA[ex.aveal]]></dc:creator><pubDate>Fri, 20 Jun 2008 11:08:27 GMT</pubDate></item><item><title><![CDATA[Reply to stack als klassen-template - probleme on Fri, 20 Jun 2008 11:14:16 GMT]]></title><description><![CDATA[<p>nein, ANY_TYPE** ist nicht richtig man könnte es zwar mit einem doppelpointer machen aber das wäre noch aufwändiger abgesehen davon das es nichts bringt.</p>
<p>eine verkettete liste sieht ungefähr so aus:</p>
<pre><code>stack_pointer ---&gt; |-------|        |-------|
                    | daten |   |--&gt; | daten |   |--&gt;  hier kommt   --&gt; NULL
                    | next  | --|    | next  | --|     noch was..
                    |-------|        |-------|
</code></pre>
<p>um diese liste zu realisieren, brauchst du eine struktur um die daten und den<br />
Verweis auf das nächste element zusammenzuhalten.</p>
<p>(empfehle <a href="http://de.wikipedia.org/wiki/Liste_(Datenstruktur)" rel="nofollow">http://de.wikipedia.org/wiki/Liste_(Datenstruktur)</a>)</p>
<p>ich schreibe dir die klasse kurz um:</p>
<pre><code class="language-cpp">template&lt;class ANY_TYPE&gt;
class Stack
{
public:
    Stack(void);
    ~Stack(void);
    bool push(const ANY_TYPE &amp;);
    bool top(ANY_TYPE &amp;);
    bool pop(void);
    bool is_empty(void);
private:
    ANY_TYPE *stack_pointer;
    int count;
    struct node
    {
        ANY_TYPE daten;
        node *next;
    };
};

template &lt;class ANY_TYPE&gt;
Stack&lt;ANY_TYPE&gt;::Stack(void)
{
    stack_pointer = NULL;
    count = 0;
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::push(const ANY_TYPE &amp;element)
{
    node *temp = new ANY_TYPE;
    if(!temp)            // falls Heapspeichervoll
        return false;
    else
    {
        temp-&gt;daten = element;
        temp-&gt;next = stack_pointer;
        stack_pointer = temp;
        return true;
    }
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::top(ANY_TYPE &amp;element)
{    // liest erstes element
    if(is_empty())
        return false;
    else
    {
        element = stack_pointer-&gt;daten;    // gibt erstes element zurueck
        return true;
    }
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::pop(void)
{                // loescht erstes element
    if(is_empty())
        return false;
    else
    {
        node *temp = stack_pointer;
        stack_pointer = stack_pointer-&gt;next;    // wird geloescht und dann NULL gesetzt
        delete temp;
        return true;
    }
}

template &lt;class ANY_TYPE&gt;
bool Stack&lt;ANY_TYPE&gt;::is_empty(void)
{
    return stack_pointer ? false : true;    // prueft ob erstes element vorhanden
}

template &lt;class ANY_TYPE&gt;
Stack&lt;ANY_TYPE&gt;::~Stack(void)
{
    while (stack_pointer)
    {
        node *temp = stack_pointer;
        stack_pointer = stack_pointer-&gt;next;
        delete temp;
    }
}
</code></pre>
<p>das muss jetzt aber funktionieren</p>
<p>mfg templater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532778</guid><dc:creator><![CDATA[templater]]></dc:creator><pubDate>Fri, 20 Jun 2008 11:14:16 GMT</pubDate></item><item><title><![CDATA[Reply to stack als klassen-template - probleme on Fri, 20 Jun 2008 11:25:36 GMT]]></title><description><![CDATA[<p>ex.aveal schrieb:</p>
<blockquote>
<p>was? die ganze Stack.ccp muss ich KOMPLETT in den header rein?</p>
</blockquote>
<p>Nur als Erklärung, da ich die vermisse oder Übersehen habe:</p>
<p>Templates müssen komplett bekannt sein, daher muss der Code entweder komplett im Header stehen (das übliche), oder als ein Ausnahmefall am ende des Headers die cpp inkludiert werden (Die man dann aber meist anders nennt wie z.b. .tmpl oder tcc...). Und die letzte Alternative (von kaum einen Compiler unterstützt, ich kenne nur den Comeau der das macht, habe auch schon gehört das inzwischen ein weiterer das können soll) gibt es noch export bei Templates - wegen der fehlenden Unterstützung aber in der Regel Unsinn.</p>
<p>ex.aveal schrieb:</p>
<blockquote>
<p>uebung_07_templates - 1 Fehler, 3 Warnung(en)</p>
</blockquote>
<p>Grundsätzlich magst du mit den Warnungen leben, aber häufig deuten diese auch Probleme an (man sollte immer versuchen auch alle Warnungen zu beheben). Und Grundsätzlich sollte man es sich auch angewöhnen mit der höchsten Warnstufe zu arbeiten die vom Compiler unterstüzt wird (Wenn es aus externen Headern kommt gibt es meist Möglichkeiten diese zu unterdrücken, aber das sollte gezielt und mit Nachdenken erfolgen).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532780</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 20 Jun 2008 11:25:36 GMT</pubDate></item><item><title><![CDATA[Reply to stack als klassen-template - probleme on Fri, 20 Jun 2008 11:58:47 GMT]]></title><description><![CDATA[<p>habs jetzt, danke leudz!!!!!</p>
<p>vielen dank an alle <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/1532801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532801</guid><dc:creator><![CDATA[ex.aveal]]></dc:creator><pubDate>Fri, 20 Jun 2008 11:58:47 GMT</pubDate></item></channel></rss>