=-Funktion für delbstdefinierte Klasse schreiben

schuetzejanett

Erfahrenes Mitglied
Hallo ich habe eine klasse CPunkt. Dieser besteht aus drei float werten (x,y,z) Nun möchte ich gerne gucken ob 2 punkte gleich sind also der x,y, und z wert gleich ist.
Gibt es eine Möglichkeit den = Operator zu überschreiben. Also die methode so abzuändern das sie true zurückgibt wenn sie gleich sind und false wenn nicht?

Also das innere der methode ist mir klar, aber wie sieht der funktionskopf also die deklaration aus?
 
bool operator=(CPunkt op2) {
if(op2.a==op2.b) return true;
else return false;
}

so in der art
 
Zuletzt bearbeitet:
Du möchtest bestimm den == operator überschreiben, das würde dann so aussehen:
bool operator==(const CPunkt& a)
{
//Hier kommt die auswerrtung rein
return...;
}
 
Hallo.
Ja gibt es, In der Klasse wirst du wohl x,y,z Private angelegt haben.
Dan brauchst du ersteinamal Get und Set funktionen (Um die Variablen zu belegen und Auslesen zu können)
Und dan brauchst du für dein Anliegen das sogenante "Überladen von Operatoren".
Damit kannst du zumbeispiel festlegen Was pasieren sol bei "+" oder "-" in deinem Fall bei den "=" gleich operator. Google mal nach Überladung von Operatoren falls es nicht all zu dringend ist, den ich lerne grade Leider für meinen Mathe LK^^ Kann grad nicht in mienen Unterlagen schauen:)

Hoffe das dir das hilft ein bisschen;)
 
Hallo ich habe eine klasse CPunkt. Dieser besteht aus drei float werten (x,y,z) Nun möchte ich gerne gucken ob 2 punkte gleich sind also der x,y, und z wert gleich ist.
Gibt es eine Möglichkeit den = Operator zu überschreiben
Den Zuweisungsoperator in der Form zu überschreiben ist generell keine gute Idee. Du meinst vermutlich den == Operator?!

Da gibt's 2 Möglichkeiten:
C++:
class CPunkt {
public:
  bool operator== (const CPunkt& other) const {
    ...
  }
};

// oder extern:

bool operator== (const CPunkt& a, const CPunkt& b) {
  ...
}
Gruß

PS: Hab grad gesehen, es gab schon Antworten. Um das nochmal zusammenzufassen, poste ich meinen Beitrag trotzdem - wo er doch schonmal geschrieben ist... :)
 
hallo

danke für die vielen antworten, das war genau das was ich gesucht habe. so sieht meine methode zum vergleichen nun aus.
Code:
bool CPunkt3D::operator==( CPunkt3D p)
{
	if (get_x() == p.get_x() && get_y() == p.get_y() && get_z() == p.get_z() )
	{
		return(true); 
	}
	return (false);
}



bool CPunkt3D::operator!=(CPunkt3D p)
{
            return !(*this == p);
}
 
Zurück