operator==
-
Warum erzeugt folgender Code:
bool operator==(myClass*,myClass*) { ... }
diesen Fehler?
[C++ Error] Unit1.cpp(60): E2082 'operator ==(myClass *,myClass *)' must be a member function or have a parameter of class type
Ich möchte mit new() auf dem Heap erzeugt Objekte einfach so vergleichen:
if(object1 == object2)
-
Steht doch schon da. Ein op == muss Meberfunktion sein, da wohl private Elemente verglichen werden müssen. Mache ihn zu einer Memberfunktion, und nimm als Parameter die gleiche Klasse an, dann kannst du einen solchen Vergleich machen.
Das ist ja dann nichts anderes als
Object1.operator == (Object2);
-
Schon probiert...
class myClass{ public: ... bool operator==(myClass*,myClass*) { ... } ... }
erzeugt:
[C++ Error] Unit1.cpp(30): E2080 'myClass::operator ==(myClass *,myClass *)' must be declared with one parameter
-
randa schrieb:
Steht doch schon da. Ein op == muss Meberfunktion sein
Nein, das steht da nicht und muss auch nicht so sein.
Man darf nur keine operatoren für bestehende typen definieren - zeiger gehören auch dazu.
also
op==(MyClass const&, MyClass const&)
statt mit zeigern
-
Hab ich auch schongemacht...
bool operator==(myClass const& ,myClass const& )
[C++ Error] Unit1.cpp(30): E2080 'myClass::operator ==(const myClass &,const myClass &)' must be declared with one parameter
-
Hi,
als Membermethode muss diese Funktion einen Parameter haben, da du *this mit einem Parameter vergleichst.
MfG Eisflamme
-
Shade Of Mine schrieb:
Nein, das steht da nicht und muss auch nicht so sein.
lol, stimmt. So'n Müll.
-
bool operator==(const myClass *a ,const myClass *b);
jetzt habe ich zwei Parameter und trotzdem:
[C++ Error] Unit1.cpp(20): E2080 'myClass::operator ==(const myClass *,const myClass *)' must be declared with one parameter
-
wurd doch bereits gesagt, entweder als memberfunktion mit einem parameter (parameter mit *this vergleichen) oder außerhalb der klasse und dann mit zwei parametern!
-
und das du keine Operatoren für Pointer Typen oder andere Builtins überladen kannst.
Da bleibt dir nichts anderes übrig als *a==*b
-
Keine Operatoren für Pointer überladen? hm... schade...