<?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[Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen]]></title><description><![CDATA[<p>Hi ich will ein Klassentemplate schreiben das wie ein &quot;Stack&quot; funktioniert.<br />
Mein Poblem ist nur bei mir das ich nicht weiß wie sich der Stack dann wenn ein neues Element hinzugefügt wird dynamisch erweitert.<br />
Hier ma der code:<br />
Die Auskommentierten Methoden sind welche die später noch folgen,haben aber mit dem eigentlichen Problem nichts weiter zu tun.Schon ma danke für die hilfe!</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace System;
using namespace std;

#ifndef _STACK_H
#define _STACK_H

template &lt;class T&gt; 
class stackNode 
	{

public:

	T data;

    };

template &lt;class T&gt; 
class Stack 
	{

public:
	//Konstruktor,setzt counter auf 0
	Stack(){ counter = 0; }; // Konstruktor (realisiert create() )
	~Stack();				// Destruktor

  bool push(const T&amp;);	//legt element auf stack ab, gibt wahr wenn erfolgreich
  void  pop();				//löscht das oberste element
  T&amp; top() const;			//gibt oberstes element zurück
  bool isEmpty() const;			//testet ob stack leer ist
  int size() const;	//liefert aktuelle anzahl der elemente auf dem stack

private:
  stackNode&lt;T&gt; *topp;			// Zeiger auf Kopf des Stacks
  int counter;				// Anzahl Elemente im Stack

     };

template &lt;class T&gt; bool Stack&lt;T&gt;::push(const T&amp; s)
	{
	if(counter == data)
		return false;
	data[counter++] = s;
	return true;
	}
/*
template &lt;class T&gt; bool Stack&lt;T&gt;::isEmpty()const
	{
	return(counter == 0);
	}
template &lt;class T&gt; int Stack::size() const
	{
	return counter;
	}
template &lt;class T&gt; Stack::top()const
	{
	return *topp;
	}

*/

#endif

int main()
{
//Test mit double werten
double index;
//double Stack definiert
Stack&lt;double&gt; doubleStack;
//Stack füllen mit 5 elementen
for(index=1;index &lt;= 5;index++)
	{

	if(doubleStack.push(index))
	cout &lt;&lt; index &lt;&lt; &quot; &quot; &lt;&lt; &quot;Auf Stack abgelegt&quot; &lt;&lt;endl;
	else 
		{
		cout &lt;&lt; &quot;Konnte nicht abgelegt werden&quot; &lt;&lt;endl;
		break;
		}
	}
//Test mit strings

}
</code></pre>
<p>Noch zur Erklärung die Templateklasse stackNode soll eine hifsklasse sein zur Speicherung der in dem Stack zu verwaltenden Daten.<br />
gruß Steve</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242532/klassentemplate-stack-problem-mit-größe-des-stacks-dynamisch-festlegen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 01:58:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242532.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Jun 2009 19:59:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 19:59:08 GMT]]></title><description><![CDATA[<p>Hi ich will ein Klassentemplate schreiben das wie ein &quot;Stack&quot; funktioniert.<br />
Mein Poblem ist nur bei mir das ich nicht weiß wie sich der Stack dann wenn ein neues Element hinzugefügt wird dynamisch erweitert.<br />
Hier ma der code:<br />
Die Auskommentierten Methoden sind welche die später noch folgen,haben aber mit dem eigentlichen Problem nichts weiter zu tun.Schon ma danke für die hilfe!</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace System;
using namespace std;

#ifndef _STACK_H
#define _STACK_H

template &lt;class T&gt; 
class stackNode 
	{

public:

	T data;

    };

template &lt;class T&gt; 
class Stack 
	{

public:
	//Konstruktor,setzt counter auf 0
	Stack(){ counter = 0; }; // Konstruktor (realisiert create() )
	~Stack();				// Destruktor

  bool push(const T&amp;);	//legt element auf stack ab, gibt wahr wenn erfolgreich
  void  pop();				//löscht das oberste element
  T&amp; top() const;			//gibt oberstes element zurück
  bool isEmpty() const;			//testet ob stack leer ist
  int size() const;	//liefert aktuelle anzahl der elemente auf dem stack

private:
  stackNode&lt;T&gt; *topp;			// Zeiger auf Kopf des Stacks
  int counter;				// Anzahl Elemente im Stack

     };

template &lt;class T&gt; bool Stack&lt;T&gt;::push(const T&amp; s)
	{
	if(counter == data)
		return false;
	data[counter++] = s;
	return true;
	}
/*
template &lt;class T&gt; bool Stack&lt;T&gt;::isEmpty()const
	{
	return(counter == 0);
	}
template &lt;class T&gt; int Stack::size() const
	{
	return counter;
	}
template &lt;class T&gt; Stack::top()const
	{
	return *topp;
	}

*/

#endif

int main()
{
//Test mit double werten
double index;
//double Stack definiert
Stack&lt;double&gt; doubleStack;
//Stack füllen mit 5 elementen
for(index=1;index &lt;= 5;index++)
	{

	if(doubleStack.push(index))
	cout &lt;&lt; index &lt;&lt; &quot; &quot; &lt;&lt; &quot;Auf Stack abgelegt&quot; &lt;&lt;endl;
	else 
		{
		cout &lt;&lt; &quot;Konnte nicht abgelegt werden&quot; &lt;&lt;endl;
		break;
		}
	}
//Test mit strings

}
</code></pre>
<p>Noch zur Erklärung die Templateklasse stackNode soll eine hifsklasse sein zur Speicherung der in dem Stack zu verwaltenden Daten.<br />
gruß Steve</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721377</guid><dc:creator><![CDATA[WINFO2105]]></dc:creator><pubDate>Thu, 04 Jun 2009 19:59:08 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 20:42:02 GMT]]></title><description><![CDATA[<p>Es mal zu deinem Stil. Nichts gegen dich oder deinen Stil, aber der ist echt kein Augenschmaus.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

#ifndef _STACK_H
#define _STACK_H

template &lt;class T&gt;
class stackNode
{
    public:
        T data;
};
stackNode *anchor;

template &lt;class T&gt;
class Stack
{
    public:
    //Konstruktor,setzt counter auf 0
        Stack(){ counter = 0; }; // Konstruktor (realisiert create() )
        ~Stack();                // Destruktor

        bool push(const T&amp;);    //legt element auf stack ab, gibt wahr wenn erfolgreich
        void  pop();                //löscht das oberste element
        T&amp; top() const;            //gibt oberstes element zurück
        bool isEmpty() const;            //testet ob stack leer ist
        int size() const;    //liefert aktuelle anzahl der elemente auf dem stack

    private:
        stackNode&lt;T&gt; *topp;            // Zeiger auf Kopf des Stacks
        int counter;                // Anzahl Elemente im Stack
};

template &lt;class T&gt; 
bool Stack&lt;T&gt;::push(const T&amp; s)
{
    if(counter == data)
        return false;
    data[counter++] = s;
    return true;
}
/*
template &lt;class T&gt; 
bool Stack&lt;T&gt;::isEmpty()const
{
    return(counter == 0);
}
template &lt;class T&gt; 
int Stack::size() const
{
    return counter;
}
template &lt;class T&gt; 
T Stack::top()const
{
    return *topp;
}

*/

#endif
</code></pre>
<p>Jetzt ist er besser <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="👍"
    /><br />
Dann rate ich dir das hier gut und aufmerksam durchzulesen<br />
<a href="http://www.willemer.de/informatik/cpp/dynamic.htm" rel="nofollow">http://www.willemer.de/informatik/cpp/dynamic.htm</a></p>
<p>Aber kommen wir nun zu deinem Code.</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
bool Stack&lt;T&gt;::push(const T&amp; s)
{
    if(counter == data)
        return false;
    data[counter++] = s;
    return true;
}
</code></pre>
<p>Wie soll deine Stack-Methode mit der Variable aus stackNode arbeiten, wenn diese garnicht bekannt gemacht wurde? Außerdem ist data kein Array, also kannst du es auch nicht zu benutzen, es sei denn du würdest ein string übergeben, aber was ist mit einem int?</p>
<p><a href="http://www.cplusplus.com/reference/stl/vector/push_back/" rel="nofollow">http://www.cplusplus.com/reference/stl/vector/push_back/</a><br />
push gibt void zurrück im Normalfall. Du gibst true zurück falls alles richtig ist, gut kann man machen, muss aber nicht unbedingt sein.<br />
So richtig viel Sinn ergibt dein push nicht.<br />
Ich empfehle dir folgende Methode</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
bool Stack&lt;T&gt;::push(const T&amp; to_pushing_data) //aussagekräftige Variablennamen, nicht unbedingt so, aber besser als &quot;s&quot;
{
    stackNode *node = new stackNode;
    node-&gt;data = to_pushing_data;
    node-&gt;next = topp;
    topp = node;
}
</code></pre>
<p>Also sieht dein Code im Ganzen so aus:</p>
<pre><code class="language-cpp">#ifndef _STACK_H
#define _STACK_H

#include &lt;iostream&gt;
#include &lt;string&gt;

template &lt;class T&gt;
class Stack
{
    public:
    //Konstruktor,setzt counter auf 0
        Stack() : counter(0), topp(0) {}; // Konstruktor (realisiert create() )
        ~Stack();                // Destruktor

        void push(const T&amp;);    //legt element auf stack ab, gibt wahr wenn erfolgreich
        void  pop();                //löscht das oberste element
        T&amp; top() const;            //gibt oberstes element zurück
        bool isEmpty() const;            //testet ob stack leer ist
        int size() const;    //liefert aktuelle anzahl der elemente auf dem stack

    private:
        class stackNode
        {
            public:
                T data;
                stackNode *next_element;
        };
        stackNode *topp;            // Zeiger auf Kopf des Stacks
        int counter;                // Anzahl Elemente im Stack
};

template &lt;class T&gt;
void Stack&lt;T&gt;::push(const T&amp; to_pushing_data)
{
    stackNode *node = new stackNode;
    node-&gt;data = to_pushing_data;
    node-&gt;next_element = topp;
    topp = node;
    ++counter;
}
/*
template &lt;class T&gt;
bool Stack&lt;T&gt;::isEmpty()const
{
    return(counter == 0);
}
template &lt;class T&gt;
int Stack::size() const
{
    return counter;
}
template &lt;class T&gt;
T Stack::top()const
{
    return *topp;
}

*/

#endif
</code></pre>
<p>using namespace std <strong>NIEMALS</strong> in einer Header Datei verwenden, vorallem, wenn du es nicht brauchst und was soll das mit dem using namespace System? Das kennt mein Code Blocks nicht mal. Genauso wenig brauchst du stdafx.</p>
<pre><code class="language-cpp">Stack() { counter = 0; }
</code></pre>
<p>Dafür kannst du die Initialisierungsliste nehmen.<br />
Wie du gesehen hast, habe ich die Node Klasse in die Stack Klasse gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721403</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Thu, 04 Jun 2009 20:42:02 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 20:42:23 GMT]]></title><description><![CDATA[<p>Na dann muss ich ma noch an meinem Stil arbeiten und natürlich auch am Verständnis. <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="🙂"
    /><br />
Werd es gleich ma ausprobieren vielen danke schon ma für de hilfe.<br />
Besten Gruß steve</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721409</guid><dc:creator><![CDATA[WINFO2105]]></dc:creator><pubDate>Thu, 04 Jun 2009 20:42:23 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 20:49:17 GMT]]></title><description><![CDATA[<p>na ich compiliere das noch mit Windows und Visual Studio weil ich mein Linux erst wieder drauf spielen muss.Und bei Windows braucht man die using namespace system und die stdafx....<br />
Ja das hab ich gesehn ist auf jedenfall übersichtlicher <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 />
Kann dir auch gleich sagen ob es geht..<br />
Danke nochma<br />
werde an mir arbieten <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/1721417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721417</guid><dc:creator><![CDATA[WINFO2105]]></dc:creator><pubDate>Thu, 04 Jun 2009 20:49:17 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 20:52:08 GMT]]></title><description><![CDATA[<p>WINFO2105 schrieb:</p>
<blockquote>
<p>Und bei Windows braucht man die using namespace system und die stdafx....</p>
</blockquote>
<p>Nein.<br />
Die stdafx-Dateien sind MS-spezifisch (precompiled Header). Das using namspace hat schon gar nichts mit dem Betriebssystem zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721420</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 04 Jun 2009 20:52:08 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 20:52:19 GMT]]></title><description><![CDATA[<blockquote>
<p>...</p>
</blockquote>
<p>wenn man keine ahnung hat...</p>
<p>stdafx kannst du in projekt-eigenschaften deaktivieren (oder klickst am anfang gleich auf &quot;empty project&quot;/&quot;leeres projekt&quot;) und using namespace system hab ich noch nie (in C++) gesehen...</p>
<p>zu der &quot;seltenheit&quot;, dass leute, die keine einfachen gui-programme bedienen können, linux bevorzugen, sag ich jetzt mal nichts...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721421</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 04 Jun 2009 20:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 20:53:03 GMT]]></title><description><![CDATA[<p>WINFO2105 schrieb:</p>
<blockquote>
<p>Und bei Windows braucht man die using namespace system und die stdafx....</p>
</blockquote>
<p>Brauch man das ? :p<br />
Also ich hab auf meinem PC Windows seit ich auf der Tastatur rumhämmere und ich hab bisher noch nie stdafx oder using namespace System gebraucht. stdafx ist auch soweit ich weiss eigentlich C und du programmierst in C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721422</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Thu, 04 Jun 2009 20:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 20:56:58 GMT]]></title><description><![CDATA[<p>FreakY&lt;3Cpp schrieb:</p>
<blockquote>
<p>stdafx ist auch soweit ich weiss eigentlich C und du programmierst in C++.</p>
</blockquote>
<p>nein?!<br />
bevor ihr so was schreibt, könntet ihr ja wenigsten mal nachlesen, wenn ihr euch nich sicher seid...<br />
stdafx ist der precompilierte header - und unabhängig davon, ob nun gerade C oder C++...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721426</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 04 Jun 2009 20:56:58 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 20:58:49 GMT]]></title><description><![CDATA[<p>Bleib cremisch <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="😃"
    /><br />
Es ist für C und C++, wird aber oft nur in C gesehen, bzw. in schlechtem C++ Code der mit C gemischt ist. Also ich hab in guten reinem C++ Code noch nie stdafx gesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721427</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Thu, 04 Jun 2009 20:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 20:59:22 GMT]]></title><description><![CDATA[<p>Gut dann hab eich mich geirrt..<br />
man kann nur dazu lernen.....<br />
Aber ich weiß nich was programmieren mit dem umgang mit einem Betriebssystem zu tun hat na ja...dazu sage ich ma nichts.</p>
<p>Egal.<br />
Auf jeden Fall wirft der compiler mir eine Fehlermeldung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Er sagt mir<br />
&quot;1&gt;.\dua_u6.2.cpp(49) : error C2955: &quot;stackNode&quot;: Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.&quot;</p>
<p>und zwar an dieser stelle:</p>
<pre><code class="language-cpp">private:
  stackNode *topp;		// Zeiger auf Kopf des Stacks
  int counter;			// Anzahl Elemente im Stack
</code></pre>
<p>gruß steve</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721428</guid><dc:creator><![CDATA[WINFO2105]]></dc:creator><pubDate>Thu, 04 Jun 2009 20:59:22 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 21:01:50 GMT]]></title><description><![CDATA[<p>Kann es sein das deine stackNode Klasse immer noch so aussieht ?</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
class stackNode
{
    ...
};
</code></pre>
<p>Wenn ja, dann mach das template weg. Immerhin brauch deine Node Klasse kein Template mehr, da sie jetzt in der Stack Klasse ist, wodurch ein Template bereits existiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721430</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Thu, 04 Jun 2009 21:01:50 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 21:04:58 GMT]]></title><description><![CDATA[<p>muss mich entschuldigen hab den Fehler gefunden. <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="🙄"
    /><br />
War Fehler meinerseits, Programm läuft super danke dir FreakY&lt;3Cpp<br />
Schönen abend noch Beste Grüße steve</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721432</guid><dc:creator><![CDATA[WINFO2105]]></dc:creator><pubDate>Thu, 04 Jun 2009 21:04:58 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 21:12:56 GMT]]></title><description><![CDATA[<p>Eine Frage hab ich noch.<br />
Bei dieser Methode:</p>
<pre><code class="language-cpp">template &lt;class T&gt; int Stack::size() const
	{
	return counter;
	}
</code></pre>
<p>Kommte die Fehlermeldung:<br />
1&gt;.\dua_u6.2.cpp(49) : error C2955: &quot;stackNode&quot;: Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.&quot;</p>
<p>Bitte ein letztes mal heut abend um hilfe <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/1721437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721437</guid><dc:creator><![CDATA[WINFO2105]]></dc:creator><pubDate>Thu, 04 Jun 2009 21:12:56 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 21:16:55 GMT]]></title><description><![CDATA[<p>Richtig wäre</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
int Stack&lt;T&gt;::size()
{
    return counter;
}
</code></pre>
<p>Edit:<br />
Du musst dir aber auch mal gut die Fehlermeldungen durchlesen.<br />
Der Error sagt dir was mit einer template Argumentliste. Diese Argumentliste ist das was zwischen den &lt;&gt; steht. Das macht dir klar, dass da was fehlt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721441</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Thu, 04 Jun 2009 21:16:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 21:17:56 GMT]]></title><description><![CDATA[<p>genau das gleiche...<br />
die fehlermeldung hab ich davor übersehen:<br />
\dua_u6.2.cpp(73) : error C2244: 'Stack&lt;T&gt;::size': Keine Übereinstimmung für Funktionsdefinition mit vorhandener Deklaration gefunden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721442</guid><dc:creator><![CDATA[WINFO2105]]></dc:creator><pubDate>Thu, 04 Jun 2009 21:17:56 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 21:19:57 GMT]]></title><description><![CDATA[<p>ne jut ok hab wieder ma was vergessen...<br />
<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="🙄"
    /><br />
Ist glaube ich ein bissel zu spät...<br />
ich verabschiede mich <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="🙂"
    /><br />
Danke nochma und nen scheenen abend noch<br />
gruß steve</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721443</guid><dc:creator><![CDATA[WINFO2105]]></dc:creator><pubDate>Thu, 04 Jun 2009 21:19:57 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 23:18:02 GMT]]></title><description><![CDATA[<p>Saß bis jetzt dran nur die eine Funktion Funzt nich.Will dort den wert ausgeben auf den der Zeiger verweißt.<br />
Das Prog sieht jetzt so aus....</p>
<pre><code class="language-cpp">// dua_u6.2.cpp: Hauptprojektdatei.

#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

#ifndef _STACK_H
#define _STACK_H

template &lt;class T&gt; 
class Stack 
	{

public:
	//Konstruktor,setzt counter auf 0
	Stack(): counter(0), topp(0){}		// Konstruktor (realisiert create() )
	~Stack(){}							// Destruktor

  bool push(const T&amp;);					//legt element auf stack ab, gibt wahr wenn erfolgreich
  void  pop();							//löscht das oberste element
  T&amp; top() const;						//gibt oberstes element zurück
  bool isEmpty() const;					//testet ob stack leer ist
  int size() const;						//liefert aktuelle anzahl der elemente auf dem stack

private:								//hier wurde die klasse stackNode mit in die klasse Stack eingefügt, der Übersicht halber, die Funktionen bleiben erhalten
	class stackNode
		{
		public:
			T data;
			stackNode *next_element;
		};
	stackNode *topp;						// Zeiger auf Kopf des Stacks
	int counter;							// Anzahl Elemente im Stack

     };

//pusht element auf stack und gibt war wenn erfolgreich
template &lt;class T&gt; bool Stack&lt;T&gt;::push(const T&amp; to_pushing_data)
	{
	stackNode *node = new stackNode;
	node-&gt;data = to_pushing_data;
	node-&gt;next_element = topp;
	topp = node;
	++counter;
	return true;
	}

//prüft ob Stack leer ist(0 Stack ist nicht leer und 1 Stack ist leer)
template &lt;class T&gt; bool Stack&lt;T&gt;::isEmpty()const
	{

	if(counter == 0)
		 return true;
	else
		return false;
	}

//gibt die größe des Stackes an
template &lt;class T&gt; int Stack&lt;T&gt;::size()const
	{
	return counter;
	}

//löscht das oberste element
template &lt;class T&gt; void Stack&lt;T&gt;::pop()
	{
	topp = topp-&gt;next_element;
	counter--;
	}

template &lt;class T&gt; T&amp; Stack&lt;T&gt;::top()const        !!!!!!!!!!!!!!!!!!!!!!
	{                                        hier merkert der compiler
	                                         !!!!!!!!!!!!!!!!!!!!!!!!!!
	return *topp;
	}

#endif

int main()
{
//Test mit double und string 

//double Stack und string Stack definiert

Stack&lt;double&gt; doubleStack;
Stack&lt;string&gt; stringStack;

//Stack fuellen mit 5 double elementen und 1 string element

//DOUBLE
cout &lt;&lt; &quot;DOUBLE&quot; &lt;&lt; endl&lt;&lt;endl;
for(double index = 1.101023 ; index &lt;=4 ; index++)
	{
	if(doubleStack.push(index))
	cout &lt;&lt; index &lt;&lt; &quot; &quot; &lt;&lt; &quot;Double-Wert auf Stack abgelegt&quot; &lt;&lt;endl;
	else 
		cout &lt;&lt; &quot;Konnte nicht abgelegt werden&quot; &lt;&lt;endl;
	}

cout &lt;&lt; &quot;Oberstes Element:  &quot; &lt;&lt; doubleStack.top() &lt;&lt; endl;
cout &lt;&lt; endl&lt;&lt;endl&lt;&lt;endl;

//STRING
cout &lt;&lt; &quot;STRING&quot; &lt;&lt;endl&lt;&lt;endl;
string text = &quot;Hallo&quot;;

	if(stringStack.push(text))
	cout &lt;&lt; &quot;String&quot; &lt;&lt; &quot;'&quot; &lt;&lt; text &lt;&lt;&quot;'&quot; &lt;&lt; &quot;auf Stack abgelegt&quot;&lt;&lt;endl;
	else 
	cout &lt;&lt; &quot;Konnte nicht abgelegt werden&quot; &lt;&lt;endl;

cout &lt;&lt; &quot;Oberstes Element:  &quot;   &lt;&lt; stringStack.top() &lt;&lt;endl;

}
</code></pre>
<p>Gruß steve</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721471</guid><dc:creator><![CDATA[WINFO2105]]></dc:creator><pubDate>Thu, 04 Jun 2009 23:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Thu, 04 Jun 2009 23:40:00 GMT]]></title><description><![CDATA[<p>Erstmal wäre es gut wenn du sagen würdest welche Funktion.<br />
Der Codestil ist immer noch recht unangenehm zu lesen.</p>
<p>So aber nun zu deinem Problem.</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
T&amp; Stack&lt;T&gt;::top()const
{
    return *topp;
}
</code></pre>
<p>Denk mal nach, was genau machst du hier ? Du gibst das GANZE Objekt an die Main zurück. Was bringt dir das? Du kannst das Objekt nicht an cout übergeben. Cout erwartet einen Wert, den es ausgeben kann. Jedoch dein Objekt enthält eine ganze Klasse. Du kannst nicht von cout erwarten eine Klasse auf die Konsole darzustellen. Wie soll es das auch tun ? Was du auf die Konsole schreiben willst, ist den <em>Wert</em> selbst. Da topp ein Objekt von stackNode enthält, kannst du auf stackNode-&gt;data zugreifen. Denn in der Variable data, die in stackNode beinhaltet ist, ist den Wert den wir brauchen.</p>
<pre><code class="language-cpp">template &lt;class T&gt; 
T&amp; Stack&lt;T&gt;::top()const
{
    return topp-&gt;data;
}
</code></pre>
<p>Edit:<br />
Glaub mir, solltest du so einen Codestil deinem Chef vorzeigen, lacht er dich aus und gibt dir den neuen Job als Putze.</p>
<p>Denk dran noch einen Destruktor zu bauen. Du hast ihn zwar in der Klasse, jedoch macht er nichts. Du musst durch die Liste und jedes Objekt löschen.</p>
<p>Edit2:<br />
Ich hab grad noch bemerkt, dass deine Pop Methode fast richtig ist, aber etwas entscheidenes fehlt.<br />
Durch pop, gehst du zwar auf das vorherige Element, löschst aber nicht das alte.</p>
<pre><code class="language-cpp">template &lt;class T&gt;
void Stack&lt;T&gt;::pop()
{
    stackNode* old_element = topp;
    topp = topp-&gt;next_element;
    delete old_element;
    --counter;
}
</code></pre>
<p>Und hier noch der Destruktor</p>
<pre><code class="language-cpp">template &lt;class T&gt;
Stack&lt;T&gt;::~Stack()
{
    while(topp)
    {
        stackNode* old_element = topp;
        topp = topp-&gt;next_element;
        delete old_element;
    }
}
</code></pre>
<p>Fast wie die Pop Methode, nur das nunmal alles gelöscht wird <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 />
Solltest du noch ne Frage haben, ich bin noch ne weile online <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721474</guid><dc:creator><![CDATA[freaky]]></dc:creator><pubDate>Thu, 04 Jun 2009 23:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Fri, 05 Jun 2009 07:47:48 GMT]]></title><description><![CDATA[<p>Ich sag ma so aus Fehlern lernt man.Und ich hab hier ne Menge gelernt <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="🙂"
    /><br />
Hab die Aufgabe hab ich jetzt komplett bewältig natürlich mit deiner hilfe.<br />
Werde deine Verbesserungsvorschläge auf jedenFall beachten und an mir und meinen Stil arbeiten <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>
<p>Mit Freundlichem Gruß<br />
Steve</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721557</guid><dc:creator><![CDATA[WINFO2105]]></dc:creator><pubDate>Fri, 05 Jun 2009 07:47:48 GMT</pubDate></item><item><title><![CDATA[Reply to Klassentemplate Stack...problem mit größe des stacks dynamisch festlegen on Fri, 05 Jun 2009 09:34:59 GMT]]></title><description><![CDATA[<p>Der Destruktor wird aber eigtl immer so hier implementiert:</p>
<pre><code class="language-cpp">while (!empty())
 pop();
</code></pre>
<p>wenn du den code mal vergleichst wirst du nämlich sehen, dass du so das pop und das empty noch mal abgetippt hast - und man versucht ja immer so wenig code wie möglich zu duplizieren (idR schafft man es, ohne Code zu duplizieren ^^)</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1721615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1721615</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 05 Jun 2009 09:34:59 GMT</pubDate></item></channel></rss>