002
15.06.2004, 23:15 Uhr
virtual
Sexiest Bit alive (Operator)
|
Hallo, also bei deiner ersten Frage, die mit Dem vector, da hast du wahrscheinlich den den op- als Member von der Klasse definiert:
C++: |
class Vektor { public: Vektor& operator-(const Vektor& vek, int); };
|
Bei dieser Deklaration wird der eine Parameter implizit übergeben (eben this) und sollte nicht in der Parameterlist stehen. Was Du schreiben könntest:
C++: |
class Vektor { public: Vektor& operator-(int); };
|
Mit gleichbleibender Implementierung. Allerdings fände ich einen solchen Operatornicht okay, weil er von der Semantik her dem üblichen widerspricht. Denn:
C++: |
Vektor x;
x - 1; // Verändert implizit x
|
Üblicherweise schreibt man denn auch:
C++: |
class Vektor { public: Vektor operator-(int); // Keine Referenz auf this, sondern ein eigenes Objekt zurückgeben };
|
Und oft:
C++: |
class Vektor { public: Vektor& operator-=(int); //Hier referenz, das wird von einem -= operator idR wohl erwartet. };
|
Bei Deiner zweiten Frage glaube ich, hast du einfach () vergessen:
C++: |
bool Vektor::operator<(const Vektor& vek) { if (this->Betrag() < vek.Betrag()) return(true); else return(false); }
|
oder eben gleich:
C++: |
bool Vektor::operator<(const Vektor& vek) { return this->Betrag() < vek.Betrag(); }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |