<?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[Vergleichsoperatorüberladung bei Zeigern]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe das Problem dass ich Zeiger auf ein Array habe und zwei Objekte die in dem Array gespeichert sind vergleichen möchte. Genauer gesagt ich habe die Klasse:</p>
<pre><code class="language-cpp">class Auto
{
public:
	int Alter;
	int Preis;
	int Marke;
	int Typ;

	Auto(){};
	Auto(int age, int price, int brand, int type):Alter(age), Preis(price), Marke(brand), Typ(type){};

	void datenausgeben() //Funktion zum Datenausgeben
	{.....}
};
</code></pre>
<p>Ich bilde zwei Instanzen dieser Klasse und speichere die in einem Array das &quot;Auto_Array&quot; heißt. Nun möchte ich über den Vergleichsoperator &quot;==&quot; diese beiden Objekte vergleichen. Also eigentlich einfach</p>
<pre><code class="language-cpp">Auto_Array(0) == Auto_Array(1)
</code></pre>
<p>Das funktioniert aber ja nicht weil er dann immer denkt sie sind unterschiedlich weil er ja die Adressen vergleicht. Jetzt komme ich leider mit meinen Unterlagen überhaupt nicht klar in denen eigentlich beschrieben sein soll wie das mit der Operator Überladung und der Deklaration des Vergleichsoperators funtioniert. Bzw. den Aufruf verstehe ich dann nicht. Also die Deklaration müsste ja irgendwie so aussehen:</p>
<pre><code class="language-cpp">bool operator == (const Auto&amp;, const Auto&amp;);
</code></pre>
<p>Dabei sollte er ja dann die beiden Instanzen vergleichen wenn &quot;==&quot; aufgerufen wird.</p>
<p>Also irgendwie funktioniert das aber nicht. Ich weis nicht mehr weiter und muss heute noch eine Aufgabe abgeben in der das passieren soll. Kann mir bitte irgendjemand weiter helfen?</p>
<p>Danke schonmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/257589/vergleichsoperatorüberladung-bei-zeigern</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 04:33:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/257589.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 30 Dec 2009 18:36:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vergleichsoperatorüberladung bei Zeigern on Wed, 30 Dec 2009 18:36:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe das Problem dass ich Zeiger auf ein Array habe und zwei Objekte die in dem Array gespeichert sind vergleichen möchte. Genauer gesagt ich habe die Klasse:</p>
<pre><code class="language-cpp">class Auto
{
public:
	int Alter;
	int Preis;
	int Marke;
	int Typ;

	Auto(){};
	Auto(int age, int price, int brand, int type):Alter(age), Preis(price), Marke(brand), Typ(type){};

	void datenausgeben() //Funktion zum Datenausgeben
	{.....}
};
</code></pre>
<p>Ich bilde zwei Instanzen dieser Klasse und speichere die in einem Array das &quot;Auto_Array&quot; heißt. Nun möchte ich über den Vergleichsoperator &quot;==&quot; diese beiden Objekte vergleichen. Also eigentlich einfach</p>
<pre><code class="language-cpp">Auto_Array(0) == Auto_Array(1)
</code></pre>
<p>Das funktioniert aber ja nicht weil er dann immer denkt sie sind unterschiedlich weil er ja die Adressen vergleicht. Jetzt komme ich leider mit meinen Unterlagen überhaupt nicht klar in denen eigentlich beschrieben sein soll wie das mit der Operator Überladung und der Deklaration des Vergleichsoperators funtioniert. Bzw. den Aufruf verstehe ich dann nicht. Also die Deklaration müsste ja irgendwie so aussehen:</p>
<pre><code class="language-cpp">bool operator == (const Auto&amp;, const Auto&amp;);
</code></pre>
<p>Dabei sollte er ja dann die beiden Instanzen vergleichen wenn &quot;==&quot; aufgerufen wird.</p>
<p>Also irgendwie funktioniert das aber nicht. Ich weis nicht mehr weiter und muss heute noch eine Aufgabe abgeben in der das passieren soll. Kann mir bitte irgendjemand weiter helfen?</p>
<p>Danke schonmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1829998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1829998</guid><dc:creator><![CDATA[laura84]]></dc:creator><pubDate>Wed, 30 Dec 2009 18:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleichsoperatorüberladung bei Zeigern on Wed, 30 Dec 2009 18:42:08 GMT]]></title><description><![CDATA[<p>laura84 schrieb:</p>
<blockquote>
<p>Also irgendwie funktioniert das aber nicht.</p>
</blockquote>
<p>Na dann ist ja alles klar.</p>
<p>Bitte mehr von dem was du gemacht hast zeigen und beschreiben, was genau nicht geht. An sich klingt deine Beschreibung nämlich richtig, außer dass du die Arraysyntax falsch hast (Tippfehler?). Und was du mit den Zeigern meinst, kapiere ich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830001</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 30 Dec 2009 18:42:08 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleichsoperatorüberladung bei Zeigern on Wed, 30 Dec 2009 18:42:45 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">bool operator == (const Auto new_auto)
	return ( (new_auto.Alter == Alter)
	       &amp;&amp;(new_auto.Preis == Preis)
	       &amp;&amp;(new_auto.Marke == Marke)
	       &amp;&amp;(new_auto.Typ == Typ) );
</code></pre>
<p>Höre gerade Hip Hop, garantiere also keine Richtigkeit <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/1830002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830002</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Wed, 30 Dec 2009 18:42:45 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleichsoperatorüberladung bei Zeigern on Wed, 30 Dec 2009 19:01:43 GMT]]></title><description><![CDATA[<p>Danke schonmal für die Antworten so ähnlich wie Kóyaánasqatsi das beschreibt habe ich es auch schonmal versucht. Gut dann hier mal mein kompletter Quellcode.</p>
<p>Klasse:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Auto
{
//private:
public:
	int Alter;
	int Preis;
	int Marke;
	int Typ;

//public:
	Auto(){};
	Auto(int age, int price, int brand, int type):Alter(age), Preis(price), Marke(brand), Typ(type){};

	void datenausgeben() //Funktion zum Datenausgeben
	{}
};

bool operator == (const Auto&amp;, const Auto&amp;);
</code></pre>
<p>Main:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Auto.h&quot;

using namespace std;

bool operator == (int age, int price, int brand, int type)
{
	return li.Alter == re.Alter &amp;&amp; li.Marke == re.Marke &amp;&amp; li.Preis == re.Preis &amp;&amp; li.Typ == re.Typ;
}

int main()
{
	Auto *Auto_Array[2];
	int Anzahl_Auto = 0;
	int choice = 0;
	int car_brand = 0;
	int car_type = 0;
	int auswahl1 = 0;
	int auswahl2 = 0;
	int auswahl3 = 0;
	int alter = 0;
	int preis = 0;

	while (choice != 4)
	{
		system(&quot;cls&quot;);

		cout &lt;&lt; &quot;***** HAUPT MENUE *****&quot; &lt;&lt; endl &lt;&lt; endl;
		cout &lt;&lt; &quot;1. Fahrzeug anlegen&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;2. Fahrzeuge anzeigen&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;3. Fahrzeuge vergleichen&quot; &lt;&lt; endl;
		cout &lt;&lt; &quot;4. Programmende&quot; &lt;&lt; endl &lt;&lt; endl;

		cout &lt;&lt; &quot;Auswahl: &quot;;
		cin &gt;&gt; choice;

		system(&quot;cls&quot;);

		switch (choice)
		{
		case 1:
			auswahl1 = 0;
			while (auswahl1 !=5)
			{
				system(&quot;cls&quot;);

				cout &lt;&lt; &quot;***** FAHRZEUG ANLEGEN *****&quot; &lt;&lt; endl &lt;&lt; endl;
				cout &lt;&lt; &quot;1 Marke angeben&quot; &lt;&lt; endl;
				cout &lt;&lt; &quot;2 Typ angeben&quot; &lt;&lt; endl;
				cout &lt;&lt; &quot;3 Alter eingeben&quot; &lt;&lt; endl;
				cout &lt;&lt; &quot;4 Preis eingeben&quot; &lt;&lt; endl;
				cout &lt;&lt; &quot;5 Hauptmenue&quot; &lt;&lt; endl &lt;&lt; endl;

				cout &lt;&lt; &quot;Auswahl: &quot;;
				cin &gt;&gt; auswahl1;

				switch (auswahl1)
				{
				case 1:
					//Markeneingabe
					system(&quot;cls&quot;);

					cout &lt;&lt; &quot;Waehlen Sie eine der folgenden Marken:&quot; &lt;&lt; endl &lt;&lt; endl;
					cout &lt;&lt; &quot;1 BMW&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;2 Mercedes&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;3 VW&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;4 Audi&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;5 Toyota&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;6 Peugeot&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;7 Skoda&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;8 Ford&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;9 Opel&quot; &lt;&lt; endl &lt;&lt; endl;

					cout &lt;&lt; &quot;Auswahl: &quot;;
					cin &gt;&gt; auswahl2;

					switch (auswahl2)
					{
					case 1:
						cout &lt;&lt; &quot;BMW&quot; &lt;&lt; endl &lt;&lt; endl;
						car_brand = 1;
						break;

					case 2:
						cout &lt;&lt; &quot;Mercedes&quot; &lt;&lt; endl &lt;&lt; endl;
						car_brand = 2;
						break;

					case 3:
						cout &lt;&lt; &quot;VW&quot; &lt;&lt; endl &lt;&lt; endl;
						car_brand = 3;
						break;

					case 4:
						cout &lt;&lt; &quot;Audi&quot; &lt;&lt; endl &lt;&lt; endl;
						car_brand = 4;
						break;

					case 5:
						cout &lt;&lt; &quot;Toyota&quot; &lt;&lt; endl &lt;&lt; endl;
						car_brand = 5;
						break;

					case 6:
						cout &lt;&lt; &quot;Peugeot&quot; &lt;&lt; endl &lt;&lt; endl;
						car_brand = 6;
						break;

					case 7:
						cout &lt;&lt; &quot;Skoda&quot; &lt;&lt; endl &lt;&lt; endl;
						car_brand = 7;
						break;

					case 8:
						cout &lt;&lt; &quot;Ford&quot; &lt;&lt; endl &lt;&lt; endl;
						car_brand = 8;
						break;

					case 9:
						cout &lt;&lt; &quot;Opel&quot; &lt;&lt; endl &lt;&lt; endl;
						car_brand = 9;
						break;
					}	

					getchar();
					break;

				case 2:
					//Typeingabe
					system(&quot;cls&quot;);

					cout &lt;&lt; &quot;Waehlen Sie einen Autotyp:&quot; &lt;&lt; endl &lt;&lt; endl;
					cout &lt;&lt; &quot;1 Kleinwagen&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;2 Kombi&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;3 Sportwagen&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;4 Kastenwagen&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;5 SUV&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;6 Kleinlaster&quot; &lt;&lt; endl;
					cout &lt;&lt; &quot;7 LKW&quot; &lt;&lt; endl &lt;&lt; endl;

					cout &lt;&lt; &quot;Auswahl: &quot;;
					cin &gt;&gt; auswahl3;

					switch (auswahl3)
					{
					case 1:
						cout &lt;&lt; &quot;Kleinwagen&quot; &lt;&lt; endl &lt;&lt; endl;
						car_type = 1;
						break;

					case 2:
						cout &lt;&lt; &quot;Kombi&quot; &lt;&lt; endl &lt;&lt; endl;
						car_type = 2;
						break;

					case 3:
						cout &lt;&lt; &quot;Sportwagen&quot; &lt;&lt; endl &lt;&lt; endl;
						car_type = 3;
						break;

					case 4:
						cout &lt;&lt; &quot;Kastenwagen&quot; &lt;&lt; endl &lt;&lt; endl;
						car_type = 4;
						break;

					case 5:
						cout &lt;&lt; &quot;SUV&quot; &lt;&lt; endl &lt;&lt; endl;
						car_type = 5;
						break;

					case 6:
						cout &lt;&lt; &quot;Kleinlaster&quot; &lt;&lt; endl &lt;&lt; endl;
						car_type = 6;
						break;

					case 7:
						cout &lt;&lt; &quot;LKW&quot; &lt;&lt; endl &lt;&lt; endl;
						car_type = 7;
						break;
					}
					getchar();
					break;	

				case 3:
					//Alterseingabe
					system(&quot;cls&quot;);
					cout &lt;&lt; &quot;Geben Sie das Alter des Autos ein: &quot;;
					cin &gt;&gt; alter;
					getchar();
					break;

				case 4:
					//Preiseingabe
					system(&quot;cls&quot;);
					cout &lt;&lt; &quot;Geben Sie den Preis des Autos ein: &quot;;
					cin &gt;&gt; preis;
					getchar();
					break;

				case 5:
					//Hauptmenue und Speichern
					Auto_Array[Anzahl_Auto] = new Auto(alter, preis, car_brand, car_type);
					Anzahl_Auto = Anzahl_Auto + 1;
					break;

				}
			}

			getchar();
			break;

		case 2:
			system(&quot;cls&quot;);
			cout &lt;&lt; &quot;***** Anzeigen *****&quot; &lt;&lt; endl &lt;&lt; endl;
			for (int h = 0; h &lt; Anzahl_Auto; h++)
			{
				cout &lt;&lt; &quot;Auto &quot; &lt;&lt; h + 1 &lt;&lt; &quot;: &quot; &lt;&lt; endl;
				Auto_Array[h]-&gt;datenausgeben();
			}
			getchar();
			getchar();
			break;

		case 3:
			system(&quot;cls&quot;);
			cout &lt;&lt; &quot;***** Vergleichen *****&quot; &lt;&lt; endl &lt;&lt; endl;
			bool test = operator == (Auto_Array[0], Auto_Array[1]);
			//if (Auto_Array[0] == Auto_Array[1])
			if(test)
			{
				cout &lt;&lt; &quot;Die Autos sind identisch!&quot; &lt;&lt; endl;
			}
			else
			{
				cout &lt;&lt; &quot;Die Autos sind verschieden!&quot; &lt;&lt; endl;
			}

			getchar();
			getchar();
			break;
		}

	}

	return 0;
}
</code></pre>
<p>Die Fette Zeile ist mein eigentliches Problem denke ich. Und das mit dem &quot;const&quot; stimmt denke ich auch nicht. Mit den Zeigern meinte ich &quot;Auto_Array[0]&quot; und &quot;Auto_Array[1]&quot; und dass die beiden verglichen werden müssten und da dann nur die Adressen verglichen werden und die natürlich immer verschieden sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830007</guid><dc:creator><![CDATA[laura84]]></dc:creator><pubDate>Wed, 30 Dec 2009 19:01:43 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleichsoperatorüberladung bei Zeigern on Wed, 30 Dec 2009 19:02:39 GMT]]></title><description><![CDATA[<p>Doppelpost</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830013</guid><dc:creator><![CDATA[laura84]]></dc:creator><pubDate>Wed, 30 Dec 2009 19:02:39 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleichsoperatorüberladung bei Zeigern on Wed, 30 Dec 2009 19:11:29 GMT]]></title><description><![CDATA[<p>Was bitte soll das sein?</p>
<pre><code class="language-cpp">bool operator == (int age, int price, int brand, int type) 
{ 
    return li.Alter == re.Alter &amp;&amp; li.Marke == re.Marke &amp;&amp; li.Preis == re.Preis &amp;&amp; li.Typ == re.Typ; 
}
</code></pre>
<p>Das ist doch ganz was anderes als die eigentliche Signatur:</p>
<pre><code class="language-cpp">bool operator == (const Auto&amp;, const Auto&amp;);
</code></pre>
<p>Und wenn Auto_Array bei dir vom Typ *Auto[] ist (warum eigentlich? Du machst ja nichts dynamisches), dann musst du eben vor dem Vergleich dereferenzieren:</p>
<pre><code class="language-cpp">*Auto_Array[0] == *Auto_Array[1]
</code></pre>
<p>Du solltest dir aber nochmal überlegen, ob du da wirklich Zeiger brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830017</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 30 Dec 2009 19:11:29 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleichsoperatorüberladung bei Zeigern on Wed, 30 Dec 2009 19:26:15 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Was bitte soll das sein?</p>
<pre><code class="language-cpp">bool operator == (int age, int price, int brand, int type) 
{ 
    return li.Alter == re.Alter &amp;&amp; li.Marke == re.Marke &amp;&amp; li.Preis == re.Preis &amp;&amp; li.Typ == re.Typ; 
}
</code></pre>
<p>Das ist doch ganz was anderes als die eigentliche Signatur:</p>
<pre><code class="language-cpp">bool operator == (const Auto&amp;, const Auto&amp;);
</code></pre>
</blockquote>
<p>Sorry, das habe ich aus versehen drin gelassen. War nur mal so ein Versuch.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Und wenn Auto_Array bei dir vom Typ *Auto[] ist (warum eigentlich? Du machst ja nichts dynamisches), dann musst du eben vor dem Vergleich dereferenzieren:</p>
<pre><code class="language-cpp">*Auto_Array[0] == *Auto_Array[1]
</code></pre>
<p>Du solltest dir aber nochmal überlegen, ob du da wirklich Zeiger brauchst.</p>
</blockquote>
<p>Naja, ich soll halt zwei Autos anlegen und das hab ich halt dann mit einem Array gelöst. Ich weis dass ich das auch anders lösen könnte, aber dann würde ich es ja nie lernen wie das mit Zeigern funktioniert. Und es funktioniert ja so irgendwie, oder? So oder so ähnlich steht das zumindest in meinen Unterlagen aber die hab ich eben nicht richtig verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830025</guid><dc:creator><![CDATA[laura84]]></dc:creator><pubDate>Wed, 30 Dec 2009 19:26:15 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleichsoperatorüberladung bei Zeigern on Wed, 30 Dec 2009 19:29:50 GMT]]></title><description><![CDATA[<p>Ich dachte das Problem wäre, dass es nicht funktioniert <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>Geht es denn mit den Tipps?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830028</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 30 Dec 2009 19:29:50 GMT</pubDate></item><item><title><![CDATA[Reply to Vergleichsoperatorüberladung bei Zeigern on Wed, 30 Dec 2009 19:33:46 GMT]]></title><description><![CDATA[<p>Okay Sorry, ich hatte vergessen das gleich auszuprobieren.<br />
Es klappt jetzt mit der vorherigen Dereferenzierung. Ich hatte das schon mal irgendwie probiert, aber anscheinend falsch, jetzt klappts. Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1830030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1830030</guid><dc:creator><![CDATA[laura84]]></dc:creator><pubDate>Wed, 30 Dec 2009 19:33:46 GMT</pubDate></item></channel></rss>