<?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[[] Überladung]]></title><description><![CDATA[<p>Guten Tag,<br />
Wir haben das Thema Operator Überladung und ich komme gerade nicht ganz weiter.<br />
es geht darum den [] zu überladen. wir haben Eine Klasse Medium, von dieser sind einige Medien abgeleitet.<br />
In der Klasse Literaturliste wird eine Liste mit verscheidenen Medien erstellt.<br />
bei einer Ausgabe soll dann nach einem String, der ID gesucht werden und dann das ganze Medium ausgegeben werden</p>
<pre><code>cout &lt;&lt; endl &lt;&lt; (*meineLiteraturliste[&quot;Pa72&quot;]).toString() &lt;&lt; endl;
</code></pre>
<p>in der .h habe ich den Operator so überladen</p>
<pre><code>Medium* operator[](const string&amp; a);
</code></pre>
<p>und in der cpp so</p>
<pre><code>Medium* Literaturliste :: operator[](const string&amp; a)
	{
		Medium* tmp;
		for(int i = 0; i &lt; gr; i++)
		{
			if(litListe[i]-&gt;getKuerzel() == a)
			{
				tmp = litListe[i];
			}
		}
		return tmp;
	}
</code></pre>
<p>gr ist die Übergebene Listengröße im Konstruktor</p>
<p>Ich bekomme aber immer Unbehandelte Ausnahme wegen einer Zugriffsverletzung beim Lesen an Position. Mir sagt dieser Fehler rein gar nichts. Hatte ich auch noch nie und im Moment komme ich nicht drauf.<br />
es öffnet sich auch noch eine datei mit dem namen xstring. und dort wird auf</p>
<pre><code>size_type size() const _NOEXCEPT
{	// return length of sequence
	return (this-&gt;_Mysize);
}
</code></pre>
<p>verwiesen</p>
<p>kann mir vll. jemand weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311273/überladung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 16:43:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311273.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Dec 2012 15:20:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [] Überladung on Sat, 01 Dec 2012 15:20:14 GMT]]></title><description><![CDATA[<p>Guten Tag,<br />
Wir haben das Thema Operator Überladung und ich komme gerade nicht ganz weiter.<br />
es geht darum den [] zu überladen. wir haben Eine Klasse Medium, von dieser sind einige Medien abgeleitet.<br />
In der Klasse Literaturliste wird eine Liste mit verscheidenen Medien erstellt.<br />
bei einer Ausgabe soll dann nach einem String, der ID gesucht werden und dann das ganze Medium ausgegeben werden</p>
<pre><code>cout &lt;&lt; endl &lt;&lt; (*meineLiteraturliste[&quot;Pa72&quot;]).toString() &lt;&lt; endl;
</code></pre>
<p>in der .h habe ich den Operator so überladen</p>
<pre><code>Medium* operator[](const string&amp; a);
</code></pre>
<p>und in der cpp so</p>
<pre><code>Medium* Literaturliste :: operator[](const string&amp; a)
	{
		Medium* tmp;
		for(int i = 0; i &lt; gr; i++)
		{
			if(litListe[i]-&gt;getKuerzel() == a)
			{
				tmp = litListe[i];
			}
		}
		return tmp;
	}
</code></pre>
<p>gr ist die Übergebene Listengröße im Konstruktor</p>
<p>Ich bekomme aber immer Unbehandelte Ausnahme wegen einer Zugriffsverletzung beim Lesen an Position. Mir sagt dieser Fehler rein gar nichts. Hatte ich auch noch nie und im Moment komme ich nicht drauf.<br />
es öffnet sich auch noch eine datei mit dem namen xstring. und dort wird auf</p>
<pre><code>size_type size() const _NOEXCEPT
{	// return length of sequence
	return (this-&gt;_Mysize);
}
</code></pre>
<p>verwiesen</p>
<p>kann mir vll. jemand weiterhelfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276321</guid><dc:creator><![CDATA[IceKing201]]></dc:creator><pubDate>Sat, 01 Dec 2012 15:20:14 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sat, 01 Dec 2012 15:35:07 GMT]]></title><description><![CDATA[<p>a) evtl. hat es damit zu tun, dass es keinen Treffer gibt und dieser Fall nicht implementiert ist, bzw. vom Aufrufer implementiert werden kann.<br />
b) Wie sieht <code>getKuerzel()</code> aus? (Bzw. ist sichergestellt, dass <code>getKuerzel()</code> immer einen std::string zurückgibt?<br />
c) Du bist Dir sicher, dass <code>litListe[i]</code> immer ein gültiger Pointer ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276324</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Sat, 01 Dec 2012 15:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sat, 01 Dec 2012 15:48:27 GMT]]></title><description><![CDATA[<p>Ja das Problem ist eventuell das ich das Thema mit den Pointern noch nicht so ganz verstanden habe. Wir haben zuerst Ausführlich Java gelernt und da ist das alles anders.<br />
das ist Meine Medium Klasse mit dem Get Kuerzel. muss ich da einen Pointer zurückgeben für die Anfrage?</p>
<pre><code>string Medium::getKuerzel()
		{
			string tmp =  kuerzel;
			return tmp;
		}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2276327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276327</guid><dc:creator><![CDATA[IceKing201]]></dc:creator><pubDate>Sat, 01 Dec 2012 15:48:27 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sat, 01 Dec 2012 16:04:11 GMT]]></title><description><![CDATA[<p><code>getKuerzel()</code> sieht unverdächtig aus.</p>
<p>IceKing201 schrieb:</p>
<blockquote>
<p>Ja das Problem ist eventuell das ich das Thema mit den Pointern noch nicht so ganz verstanden habe.</p>
</blockquote>
<p>:xmas1:</p>
<p>Wir koennen ja ein wenig debuggen.<br />
Unten habe ich Deinen Code ein wenig verändert, um Dir bei der Beantwortung der Fragen a und c zu helfen.<br />
Erstmal wird sichergestellt, dass die Funktion einen Pointer aus der Liste, oder NULL zurückgibt.<br />
Dann habe ich noch eine Sicherung eingebaut, die schaut, ob wir es wirklich mit einem Zeiger zu tun haben.<br />
Der Aufrufer müsste jetzt sowas schreiben</p>
<pre><code class="language-cpp">if(lit_liste[&quot;FurbleWurble&quot;] != NULL)
// gefunden
else
// nicht gefunden
</code></pre>
<p>(Klar, warum dieser Tanz nötig ist?)</p>
<pre><code class="language-cpp">#include &lt;cassert&gt;

//...

Medium* Literaturliste :: operator[](const string&amp; a)
{
    Medium* tmp = NULL;
    for(int i = 0; i &lt; gr; i++)
    {
        assert(litListe[i] != NULL);
        if(litListe[i]-&gt;getKuerzel() == a)
        {
             tmp = litListe[i];
        }
    }
    return tmp;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2276329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276329</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Sat, 01 Dec 2012 16:04:11 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sat, 01 Dec 2012 17:23:40 GMT]]></title><description><![CDATA[<p>danke für deine Hilfe.<br />
Habe das ganze jetzt mal versucht. Aber es geht immer noch nicht der Fehler liegt wo anders <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=":-/"
      alt="😕"
    /><br />
Muss ich mal weiter suchen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276348</guid><dc:creator><![CDATA[IceKing201]]></dc:creator><pubDate>Sat, 01 Dec 2012 17:23:40 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sat, 01 Dec 2012 17:39:25 GMT]]></title><description><![CDATA[<p>IceKing201 schrieb:</p>
<blockquote>
<p>danke für deine Hilfe.<br />
Habe das ganze jetzt mal versucht. Aber es geht immer noch nicht der Fehler liegt wo anders <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=":-/"
      alt="😕"
    /><br />
Muss ich mal weiter suchen</p>
</blockquote>
<p>Viel Erfolg!</p>
<p>IceKing201 schrieb:</p>
<blockquote>
<p>gr ist die Übergebene Listengröße im Konstruktor</p>
</blockquote>
<p>Okay. D.h. die Liste wird mit einer festen Anzahl von Objekten initialisiert. Richtig?<br />
Kann ich den C'tor mal sehen? Und die Definition von Literaturliste?</p>
<p>Mein Verdacht ist, dass Du Pointer dereferenzierst, die gar nicht auf Medium-Objekte zeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276354</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Sat, 01 Dec 2012 17:39:25 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sat, 01 Dec 2012 22:07:00 GMT]]></title><description><![CDATA[<p>sry, meine freundin hat mich in twilight geschleppt ^^</p>
<pre><code>#include &quot;Literaturliste.h&quot;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cassert&gt; 
using namespace std;

	Literaturliste::Literaturliste(){}

	Literaturliste::Literaturliste(int gr)
	{
		this-&gt;platz = 0;
		this-&gt;gr = gr;
		this-&gt;litListe = new Medium*[gr]; 
	}

	void Literaturliste::eintragen(Medium* z)
	{
	  if(platz &lt; gr)
	  {
			litListe[platz] = z;
			platz = platz +1;
	  }
	  else
	  {
			cout &lt;&lt; &quot;liste voll&quot; &lt;&lt;endl;
	  }	
	}

	Medium* Literaturliste :: operator[](const string&amp; a)
	{
		Medium* tmp = NULL;
		for(int i = 0; i &lt; gr; i++)
		{
			assert(litListe[i] != NULL);
			if(litListe[i]-&gt;getKuerzel() == a)
			{
				tmp = litListe[i];
			}
		}
		return tmp;
	}

	ostream&amp; operator&lt;&lt; (ostream&amp; out, const Literaturliste&amp; a)
	{
		for(int i=0; i &lt; a.gr ; i++)
		{
			out &lt;&lt; a.litListe[i]-&gt;toString()&lt;&lt;endl&lt;&lt;endl;
		}
		return out;

	}
</code></pre>
<p>das ist die Literatur liste mit dem Komparator oben. Bin immer noch nicht drauf gekommen ich vermute ich greife irgendwo falsch auf das Feld oder so zu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276426</guid><dc:creator><![CDATA[IceKing201]]></dc:creator><pubDate>Sat, 01 Dec 2012 22:07:00 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sat, 01 Dec 2012 22:37:25 GMT]]></title><description><![CDATA[<p>Aha.</p>
<p>Hmm. Pointer sind in diesem Fall noch nicht mal das Hauptproblem.</p>
<p>Bis wohin darfst Du Deine Liste denn überhaupt durchsuchen, wenn Du Sie durchsuchst?<br />
<code>gr</code> oder <code>platz</code> ? (Fangfrage!)</p>
<p>Und dann: warum überhaupt diese Geschichte mit Pointern?<br />
Arrays und Pointer sind die größten Fehlerquellen hier im Forum, und Du hast beides im Listing. Da ist auf jeden Fall Frust und Überraschung vorprogrammiert...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276432</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Sat, 01 Dec 2012 22:37:25 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sat, 01 Dec 2012 23:28:24 GMT]]></title><description><![CDATA[<p>bis auf platz, hast recht ansonsten laufe ich zu weit aber löst das problem 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=":-/"
      alt="😕"
    /><br />
und ja am verzweifeln bin ich langsam weil ich nicht drauf komme :-D, wie gesagt da mit den pointern steige ich noch nicht so ganz durch. fand es von anfang an auch etwas blöd das man mit java angefangen hat und c++ jetzt mehr oder weniger im Schnelldurchgang macht. aber hilft jetzt alles nichts.<br />
wie kann ich es denn am besten vermeiden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276441</guid><dc:creator><![CDATA[IceKing201]]></dc:creator><pubDate>Sat, 01 Dec 2012 23:28:24 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sat, 01 Dec 2012 23:47:10 GMT]]></title><description><![CDATA[<p>IceKing201 schrieb:</p>
<blockquote>
<p>wie kann ich es denn am besten vermeiden?</p>
</blockquote>
<p>1. Du ersetzt die Pointer durch Referenzen, bzw. normale Objekte:</p>
<pre><code class="language-cpp">class Literaturliste{
public:
  Literaturliste::Literaturliste(int);
  void eintragen(const Medium&amp;);
  Medium&amp; operator[](const string&amp;);
  friend ostream&amp; operator&lt;&lt; (ostream&amp;, const Literaturliste&amp;);
private:
  int platz;
  int gr;
  Medium* litListe;  // Pointer auf array von Medium
};
</code></pre>
<p>Das erfordert ein paar Anpassungen hier und da, macht aber alles schon viel robuster.<br />
Dann:<br />
2. Du ersetzt auch noch das Array durch einen Container aus der STL. z.B. <code>std::vector</code> .</p>
<pre><code class="language-cpp">class Literaturliste{
public:
  Literaturliste::Literaturliste(int);
  void eintragen(const Medium&amp;);
  Medium&amp; operator[](const string&amp;);
  friend ostream&amp; operator&lt;&lt; (ostream&amp;, const Literaturliste&amp;);
private:
  int platz;
  int gr;
  std::vector&lt;Medium&gt; litListe;
};
</code></pre>
<p>Das ist überschaubar viel Aufwand. Und spätestens mit Schritt 2 unterscheidet sich das nicht mehr viel von der Implementierung von Java.<br />
Allerdings musst Du Dich mit dem STL Container vertraut machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276443</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Sat, 01 Dec 2012 23:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sun, 02 Dec 2012 00:32:26 GMT]]></title><description><![CDATA[<p>Ach herje...<br />
Ich lese gerade in Deinem Eingangsposting:</p>
<p>IceKing201 schrieb:</p>
<blockquote>
<p>wir haben Eine Klasse Medium, von dieser sind einige Medien abgeleitet.<br />
In der Klasse Literaturliste wird eine Liste mit verscheidenen Medien erstellt.</p>
</blockquote>
<p>Damit lässt sich die Aufgabe nicht ganz so realisieren, wie ich mir das vorgestellt hatte... <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>
<p>Jetzt ist aber erstmal Feierabend für mich...;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276446</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Sun, 02 Dec 2012 00:32:26 GMT</pubDate></item><item><title><![CDATA[Reply to [] Überladung on Sun, 02 Dec 2012 10:22:54 GMT]]></title><description><![CDATA[<p>also es geht... hab die ganze zeit an der falschen stelle gesucht.<br />
Das Problem war das er bei</p>
<pre><code>cout &lt;&lt; &quot;Literaturliste:&quot; &lt;&lt; endl &lt;&lt; meineLiteraturliste;
</code></pre>
<p>bei der Überladung des &lt;&lt; OP auch bis zu gr, und nicht nur bis platz gesucht hat.<br />
deswegen ist er gar nicht erst zum[] bekommen....<br />
total dummer Fehler tut mir leid.<br />
Aber dennoch danke für deine Hilfe. Hat mir auch so weiter geholfen in der ganzen Problematik :-).<br />
Deinen letzten Tipp werde ich ersuchen auch noch umzusetzen danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276474</guid><dc:creator><![CDATA[IceKing201]]></dc:creator><pubDate>Sun, 02 Dec 2012 10:22:54 GMT</pubDate></item></channel></rss>