<?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[problem mit stack und basisklasse]]></title><description><![CDATA[<p>Also ich habe folgendes Problem:</p>
<p>Ich habe eine Basisklasse:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class LContainer
{
protected:
	class Element
	{
	public:
		T data;
		Element* next;
		Element(const T&amp; v):data(v),next(NULL) {} //Copy C-tor von Element
	};
	class EmptyLContainerException: public std::exception
	{
		virtual const char* what() throw() {return &quot;LContainer is empty&quot;;}
	};
	Element *first;
	unsigned int anz_elem;
public:
	LContainer();
	~LContainer();
	unsigned int getAnzahlElement();
	bool is_empty();
	void clear();
};
</code></pre>
<p>Dies ist die basisklasse von Stack, Queue, und Deque</p>
<p>nun habe ich aber das problem, dass Stack ja nicht first, sondern top benutzt, nur weiß ich nicht wie ich machen kann, dass ich top und nicht first benutzen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219794/problem-mit-stack-und-basisklasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 19:03:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219794.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Aug 2008 18:33:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 18:39:44 GMT]]></title><description><![CDATA[<p>Also ich habe folgendes Problem:</p>
<p>Ich habe eine Basisklasse:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class LContainer
{
protected:
	class Element
	{
	public:
		T data;
		Element* next;
		Element(const T&amp; v):data(v),next(NULL) {} //Copy C-tor von Element
	};
	class EmptyLContainerException: public std::exception
	{
		virtual const char* what() throw() {return &quot;LContainer is empty&quot;;}
	};
	Element *first;
	unsigned int anz_elem;
public:
	LContainer();
	~LContainer();
	unsigned int getAnzahlElement();
	bool is_empty();
	void clear();
};
</code></pre>
<p>Dies ist die basisklasse von Stack, Queue, und Deque</p>
<p>nun habe ich aber das problem, dass Stack ja nicht first, sondern top benutzt, nur weiß ich nicht wie ich machen kann, dass ich top und nicht first benutzen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561042</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 18:39:44 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 18:41:58 GMT]]></title><description><![CDATA[<p>Das würde ich nicht mit Referenzen lösen. <code>top()</code> ist normalerweise eine Funktion, genauso wie <code>first()</code> (oder eben <code>front()</code> ) eine Funktion sein sollte, und die das erste Element (und nicht einen Zeiger darauf) zurückliefert. Dann brauchst du in den abgeleiteten Klassen nur die Funktionen jeweils mit dem passenden Namen zu implementieren.</p>
<p>Trotzdem zu Referenzen: Diese müssen immer im Konstruktor initialisiert werden. Das gilt auch für Referenzen auf Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561047</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 18:41:58 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 18:44:52 GMT]]></title><description><![CDATA[<p>das heißt ich soll ich der klasse einfach irgentetwas als bezeichner des ersten elements nehmen, und dann ne funktion, (im Stack: top in der Queue: first), die dann data von dem pointer auf das erste element zurückgibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561050</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 18:44:52 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 18:53:00 GMT]]></title><description><![CDATA[<p>Ja, genauer gesagt gibt die Funktion eine Referenz auf den Wert zurück, damit er auch verändert werden kann. Das würde ich sowieso so machen, damit du auch analog dazu bei den Queues eine Funktion schreiben kannst, die das letzte Element (d.h. eine Referenz darauf) zurückgibt.</p>
<p>Generell sind Funktionen besser, weil sie die Schnittstellen der Klassen repräsentieren. Dann kannst du die Zeiger auch privat haben. Und wenn du plötzlich noch eine weitere Funktionalität einbauen willst, kannst du die entsprechende Funktion ändern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561056</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 18:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 18:58:52 GMT]]></title><description><![CDATA[<p>Hmm ich verstehe jetzt nicht genau was du meinst, ich schreib mal jetzt die 2 klassen, aber ohne funktionen:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class LContainer
{
protected:
	class Element
	{
	public:
		T data;
		Element* next;
		Element(const T&amp; v):data(v),next(NULL) {} //Copy C-tor von Element
	};
	class EmptyLContainerException: public std::exception
	{
		virtual const char* what() throw() {return &quot;LContainer is empty&quot;;}
	};
	Element *ptrtofirst;
	unsigned int anz_elem;
public:
	LContainer();
	~LContainer();
	unsigned int getAnzahlElement();
	bool is_empty();
	void clear();
};
</code></pre>
<pre><code class="language-cpp">template&lt;class T&gt;
class LStack :public LContainer&lt;T&gt;
{
public:
	LStack();
	LStack(const LStack&amp; other);
	~LStack();
	void push(const T&amp; v);
	T pop();
	T&amp; top();
	void swap(LStack&amp; other);
	LStack&lt;T&gt;&amp; operator=(const LStack&amp; other);
};
</code></pre>
<p>Dann kannst du ja genauer beschreiben was besser wäre^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561064</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 18:58:52 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 19:09:22 GMT]]></title><description><![CDATA[<p>uhsuhz schrieb:</p>
<blockquote>
<p>Dann kannst du ja genauer beschreiben was besser wäre^^</p>
</blockquote>
<p>Ja, oder du könntest selber überlegen.</p>
<p>Ich hab ja alles schon gesagt: Schreib eine Funktion, die eine Referenz auf den Wert an der ersten Stelle zurückgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561071</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 19:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 19:22:02 GMT]]></title><description><![CDATA[<p>hab ich doch in der LStack:</p>
<p>T&amp; top();</p>
<p>oder wie meinst du das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561080</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 19:22:02 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 19:27:46 GMT]]></title><description><![CDATA[<p>uhsuhz schrieb:</p>
<blockquote>
<p>ich schreib mal jetzt die 2 klassen, aber <strong>ohne funktionen</strong></p>
</blockquote>
<p>Ups, da hab ich wohl nach deiner Mitteilung zu wenig genau hingeschaut. Dennoch hast du die Funktion nur deklariert, was dir noch gar nichts bringt <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>Definier die Funktion <code>top()</code> und versuch doch einfach mal, eine Referenz auf den ersten Wert zurückzugeben. Wenn ich dir den Code poste, bringt das uns beiden nichts. Bei konkreten Problemen kannst du ja wieder nachfragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561086</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 19:27:46 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 19:33:53 GMT]]></title><description><![CDATA[<p>ach so wir haben aneinander vorbeigeredet^^ ich habe gemeint nur die deklaration der funktionen, die aber schon alle implementiert sind:</p>
<p>hier ist mal die ganze klasse:</p>
<pre><code class="language-cpp">#ifndef LSTACK_H
#define LSTACK_H

#include &quot;lcontainer.h&quot;

template&lt;class T&gt;
class LStack :public LContainer&lt;T&gt;
{
public:
	LStack();
	LStack(const LStack&amp; other);
	~LStack();
	void push(const T&amp; v);
	T pop();
	T&amp; top();
	void swap(LStack&amp; other);
	LStack&lt;T&gt;&amp; operator=(const LStack&amp; other);
};

template&lt;class T&gt;LStack&lt;T&gt;::LStack()
:LContainer&lt;T&gt;::LContainer()
{
}

template&lt;class T&gt;LStack&lt;T&gt;::LStack(const LStack &amp;other)
:LContainer&lt;T&gt;::LContainer()
{
	if(!other.ptrtofirst) //leerer Stack, nichts zu kopieren
		return;
	this-&gt;ptrtofirst = new Element(other.ptrtofirst-&gt;data); //wenn hier was fliegt räumt C++ selber auf
	Element *rigth = other.ptrtofirst;
	Element *left = ptrtofirst;
	while(rigth-&gt;next)
	{
		try
		{
			left-&gt;next = new Element(rigth-&gt;next-&gt;data); //sollte hier was fliegen...
			rigth = rigth-&gt;next;
			left = left-&gt;next;
		}
		catch(...)
		{
			clear();   //müssen wir selber aufräumen
			throw;
		}
	}
}

template&lt;class T&gt;LStack&lt;T&gt;::~LStack()
{
	LContainer::~LContainer();
}

template&lt;class T&gt;void LStack&lt;T&gt;::push(const T&amp; v)
{
	Element* temp = new Element(v);
	temp-&gt;next = this-&gt;ptrtofirst;
	this-&gt;ptrtofirst = temp;
	++anz_elem;
}

template&lt;class T&gt;T LStack&lt;T&gt;::pop()
{
	if(!this-&gt;ptrtofirst)
		throw EmptyLContainerException();
	T result(this-&gt;ptrtofirst-&gt;data);
	Element *temp = this-&gt;ptrtofirst;
	this-&gt;ptrtofirst = this-&gt;ptrtofirst-&gt;next;
	delete(temp);
	--anz_elem;
	return result;
}

template&lt;class T&gt;T&amp; LStack&lt;T&gt;::top()
{
	if(!this-&gt;ptrtofirst)
		throw EmptyLContainerException();
	return this-&gt;ptrtofirst-&gt;data;
}

template&lt;class T&gt; void LStack&lt;T&gt;::swap(LStack &amp;other)
{
	std::swap(this-&gt;anz_elem, other.anz_elem);
	std::swap(this-&gt;ptrtofirst,other.ptrtofirst);
}

template&lt;class T&gt; LStack&lt;T&gt;&amp; LStack&lt;T&gt;::operator=(const LStack&amp; other)
{
	LStack&lt;T&gt; temp = other;
	this-&gt;swap(temp);
	return *this;
}
#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1561089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561089</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 19:33:53 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 20:03:00 GMT]]></title><description><![CDATA[<p>ich habe noch eine Frage:</p>
<p>gibt es irgenteinen Sinn manche funktionen als konstantwährend zu deklarieren?</p>
<p>Für mich gibt es keinen Sinn zB: einen const Stack zu erstellen, oder was meint ihr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561106</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 20:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 20:15:26 GMT]]></title><description><![CDATA[<p>Die <code>top()</code> -Funktion sollte so eigentlich stimmen. Funktioniert sie? Und die restlichen Funktionen? Ich hab jetzt natürlich nicht deinen ganzen Code getestet. Aber schau mal, ob du keine Zugriffsverletzungen oder sonstige Fehler im Programm hast.</p>
<p>Noch ein Detail: Es ist zwar Geschmackssache, aber du brauchst die <code>this-&gt;</code> eigentlich nicht. Wenn sie dir bei der Übersichtlichkeit helfen, lass sie drin. Mich würden sie stören <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>uhsuhz schrieb:</p>
<blockquote>
<p>gibt es irgenteinen Sinn manche funktionen als konstantwährend zu deklarieren?</p>
</blockquote>
<p>Grundsätzlich schon. Erstens sieht man dann gerade (und stellt auch sicher), dass die Funktion die Klasse nicht verändert. Zweitens können wie gesagt auch konstante Instanzen diese Funktion benutzen.</p>
<p>Zu dem gerade:</p>
<p>uhsuhz schrieb:</p>
<blockquote>
<p>Für mich gibt es keinen Sinn zB: einen const Stack zu erstellen, oder was meint ihr?</p>
</blockquote>
<p>Nein, einen erstellen wohl kaum. Eher, wenn du bereits einen Stack hast, und von diesem eine konstante Kopie anfertigst. Oder wenn du eine konstante Referenz an eine Funktion übergibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561114</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 20:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 20:26:25 GMT]]></title><description><![CDATA[<p>ok danke, io die anderen funktionen funktionnieren alle, top klappt beim lesen auch schon mal hab noch nicht getestet, ob man auch schreiben kann.</p>
<p>zum dem this. Ich weiß dass man es nicht braucht, aber ich mag es irgentwie lieber wenn ich this-&gt; davor schreibe.</p>
<p>nun habe ich noch ein frage, ich habe den == und den != operator in der basisklasse implementiert.</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class LContainer
{
protected:
	class Element
	{
	public:
		T data;
		Element* next;
		Element(const T&amp; v):data(v),next(NULL) {} //Copy C-tor von Element
	};
	class EmptyLContainerException: public std::exception
	{
		virtual const char* what() throw() {return &quot;LContainer is empty&quot;;}
	};
	Element *ptrtofirst;
	unsigned int anz_elem;
public:
	LContainer();
	~LContainer();
	unsigned int getAnzahlElement();
	bool is_empty();
	void clear();
	bool operator==(LContainer&amp; other);
	bool operator!=(LContainer&amp; other);
};
</code></pre>
<pre><code class="language-cpp">template&lt;class T&gt;bool LContainer&lt;T&gt;::operator ==(LContainer&amp; other)
{
	if(this-&gt;anz_elem != other.anz_elem)
		return false;
	Element* rigth = other.ptrtofirst;
	Element* left = this-&gt;ptrtofirst;
	while(rigth)
	{
		if(rigth-&gt;data == left-&gt;data)
		{
			rigth = rigth-&gt;next;
			left = left-&gt;next;
		}
		else
			return false;
	}
	return true;
}

template&lt;class T&gt;bool LContainer&lt;T&gt;::operator!=(LContainer&amp; other)
{
	if(*this == other)
		return false;
	return true;
}
</code></pre>
<p>ich dachte dass ich die funktionen überladen müsste in der LStack klasse, und dann per static_cast&lt;LContainer&lt;T&gt;&gt;(...) aufrufen müsste, aber irgenwie klappt es auch wenn ich den operator nicht überladen habe für die LStack-klasse, kann ich das so lassen, oder ist es sicherer wenn ich per static_cast gehe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561120</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 20:26:25 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 20:31:53 GMT]]></title><description><![CDATA[<p>Wie kommt man auf die Idee vor seine Klassen so ein bescheuertes L zu setzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561127</guid><dc:creator><![CDATA[LOL?]]></dc:creator><pubDate>Thu, 07 Aug 2008 20:31:53 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 20:35:50 GMT]]></title><description><![CDATA[<p>öhm vielleicht weil das L für Linked steht?<br />
aber dieser post war jetzt wirklick überflüssig, ich hätte die klasse ja auch<br />
HaltDieFresseStack nennen können, ist ja meine entscheidung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561132</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 20:35:50 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 20:40:29 GMT]]></title><description><![CDATA[<p>uhsuhz schrieb:</p>
<blockquote>
<p>ich dachte dass ich die funktionen überladen müsste in der LStack klasse, und dann per static_cast&lt;LContainer&lt;T&gt;&gt;(...) aufrufen müsste, aber irgenwie klappt es auch wenn ich den operator nicht überladen habe für die LStack-klasse, kann ich das so lassen, oder ist es sicherer wenn ich per static_cast gehe?</p>
</blockquote>
<p>Ich würde die Operatoren global machen und in den Klassen als Friend deklarieren. Ich würde dann aber für jeden Containertypen, der in der Praxis vorkommt, eine überladene Funktion definieren. Nach Möglichkeit lässt du die Implementierung für die Basisklasse weg, damit es nicht zu ungewollten Vergleichen (implizite Umwandlung) kommt. Oder du machst das ganze in der Klasse (evtl. polymorph). Aber lass <code>op==</code> für die Basisklasse weg, wenn er nicht gebraucht wird.</p>
<p>Und den !=-Operator kannst du einfacher implementieren:</p>
<pre><code class="language-cpp">template&lt;class T&gt;bool LContainer&lt;T&gt;::operator!=(LContainer&amp; other)
{
    return !(*this == other);
}
</code></pre>
<p>Und <strong>right</strong> schreibt man so <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/1561135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561135</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 20:40:29 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 20:52:42 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Und <strong>right</strong> schreibt man so <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>
</blockquote>
<p>lol hab da wohl nicht aufgepasst^^ na lieber mal schnell ändern^^</p>
<p>//Edit<br />
hmm irgentwie verstehe ich nicht genau was ich da machen soll...:-( also aus der basisklasse rausnehmen ist ja klar, aber dann haben die ja keinen zugriff mehr auf element?? und auch nicht mehr auf ptrtofirst, ich müsste die funktion höchstens als friend deklarieren,hmm da bräuchte ich vielleicht wenn es geht genauere beschreibungen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561137</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 20:52:42 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 21:00:59 GMT]]></title><description><![CDATA[<p>Wenn du eine Klasse hast, und diese soll externen Funktionen Zugriff auf private Member gewähren, musst du diese Funktionen in der Klasse als Friend deklarieren.</p>
<pre><code class="language-cpp">// Deklaration und Definition der Funktion (genauer: des überladenen Operators)
bool operator==(const MyClass&amp; Left, const MyClass&amp; Right)
{
    // ...
}

class MyClass
{
    // Friend-Deklaration innerhalb der Klasse; operator== kann jetzt
    // auf private Member von MyClass zugreifen
    friend bool operator==(const MyClass&amp; Left, const MyClass&amp; Right);
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1561146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561146</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 07 Aug 2008 21:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 21:04:08 GMT]]></title><description><![CDATA[<p>uhsuhz schrieb:</p>
<blockquote>
<p>öhm vielleicht weil das L für Linked steht?<br />
aber dieser post war jetzt wirklick überflüssig, ich hätte die klasse ja auch<br />
HaltDieFresseStack nennen können, ist ja meine entscheidung</p>
</blockquote>
<p>loooooooool</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561148</guid><dc:creator><![CDATA[LOL!]]></dc:creator><pubDate>Thu, 07 Aug 2008 21:04:08 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 22:12:27 GMT]]></title><description><![CDATA[<p>hmm ich merke gerade, dass ich deque gar nicht von basis ableiten kann, da next ja kein prev kennt... gibt es da eventuell eine möglichkeit, dass next aus der basisklasse prev kennt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561179</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 22:12:27 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 22:22:54 GMT]]></title><description><![CDATA[<p>uhsuhz schrieb:</p>
<blockquote>
<p>hmm ich merke gerade, dass ich deque gar nicht von basis ableiten kann, da next ja kein prev kennt... gibt es da eventuell eine möglichkeit, dass next aus der basisklasse prev kennt?</p>
</blockquote>
<p>Ehm.. Du speicherst dir auch einen Verweise auf prev?! <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/1561183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561183</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 07 Aug 2008 22:22:54 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 22:26:03 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@nexus</a> ich habe es nun so gelöst, dass ich in der Containerklasse:</p>
<pre><code class="language-cpp">template&lt;class T&gt;
class MyContainer
{
	template&lt;class T&gt;friend bool operator==(const MyContainer&amp; leftContainer,const MyContainer&amp; rightContainer);
.
.
.
};
</code></pre>
<p>und dann in der stack klasse noch mal:</p>
<pre><code class="language-cpp">template&lt;class T&gt; bool operator==(const MyStack&lt;T&gt;&amp; left,const MyStack&lt;T&gt;&amp; right)
{
	return (static_cast&lt;MyContainer&lt;T&gt;&gt;(left) == static_cast&lt;MyContainer&lt;T&gt;&gt;(left));
}

template&lt;class T&gt; bool operator!=(const MyStack&lt;T&gt;&amp; left,const MyStack&lt;T&gt;&amp; right)
{
	return !(left == right);
}
</code></pre>
<p>diese funktionen sind aber nicht freunde der klasse, brauchen sie auch nicht. funktionieren tut es schon mal^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561185</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 22:26:03 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 22:26:11 GMT]]></title><description><![CDATA[<p>Ableitung macht hier wenig Sinn. Was du willst ist Komposition.<br />
Damit loesen sich uebrigens auch alle Namensprobleme in Luft auf.</p>
<p>Stack und Deque sind zwar Container, aber bei Vererbung das Liskov Substitution Principle beachten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561186</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Thu, 07 Aug 2008 22:26:11 GMT</pubDate></item><item><title><![CDATA[Reply to problem mit stack und basisklasse on Thu, 07 Aug 2008 22:33:35 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Ableitung macht hier wenig Sinn. Was du willst ist Komposition.<br />
Damit loesen sich uebrigens auch alle Namensprobleme in Luft auf.</p>
<p>Stack und Deque sind zwar Container, aber bei Vererbung das Liskov Substitution Principle beachten.</p>
</blockquote>
<p>io ich werde mir das morgen mal anschauen, für heute habe ich genug^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1561190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1561190</guid><dc:creator><![CDATA[uhsuhz]]></dc:creator><pubDate>Thu, 07 Aug 2008 22:33:35 GMT</pubDate></item></channel></rss>