Überladung von relationalen Operatoren die template-Klassen als Parameter haben
-
Hallo zusammen.
Der Titel sagts schon..
Ich möchte relationale Operatoren(<,>,<=,>=) für ein Template Vector<T> definieren, aber offenbar muss ich diese Operatoren global definieren(kann sie also nicht als "Member-Methoden-Operatoren"(wie auch immer..) definieren).so habe ich mir das vorgestellt:
bool operator< (Vector<T> lhs, Vector<T> rhs)T ist der Typname..
Naja, ich weis halt nicht, wie ich der Operator-Überladung jetzt den Typ T übergeben soll..
Ursprünglich dachte ich, ich könnte diese Operatoren innerhalb der Klasse definieren:
template<typename T> class Vector { bool operator< (Vector<T>& lhs, Vector<T>& rhs); };Eigentlich bin ich ziemlich verwirrt, ist das wirklich so, dass sich relationale operatoren nur "global" überladen lassen? Wieso?
Könnt ihr mir helfen?
-
template<typename T> class Vector { // ... bool operator >(Vector& vector); // lhs ist this, rhs ist vector ;) };Grüssli
-
Also ist das falsch:
template<typename T> class Irgendwas { Irgendwas<T> TuWas(Irgendwas<T> weisauchnich); };und müsste so aussehen:
template<typename T> class Irgendwas { Irgendwas TuWas(Irgendwas weisauchnich); };??
Danke

-
blubberblub schrieb:
Also ist das falsch:
template<typename T> class Irgendwas { Irgendwas<T> TuWas(Irgendwas<T> weisauchnich); };und müsste so aussehen:
template<typename T> class Irgendwas { Irgendwas TuWas(Irgendwas weisauchnich); };??
Danke

Nö, is beides genau dasselbe. Steht im Standard auch recht schön beschrieben warum die 2. Form erlaubt ist und überhaupt.