Ich bin auf ein seltsames Problem mit dem binären operator==
gestoßen.
Ich habe eine Funktion, die zurückgibt: Type* get();
, T
ist vom Typ enum Colors {Rot,Schwarz}
und ich habe einen operator==
definiert als:
bool operator==(Type* links, Colors rechts)
{
//...
}
Jetzt habe ich im Code folgende Zeile:
if (get() == Rot)
{
//
}
aber hier erhalte ich einen Fehler, der besagt:
Fehler C2679: binäres '==' : Es wurde kein Operator gefunden, der einen rechten Operanden vom Typ 'Colors' akzeptiert (oder es gibt keine akzeptable Konvertierung)
1> könnte 'eingebauter C++ operator==(Node *, Node *)' sein
1> mit
1> [
1> Key_T=int,
1> Value_T=int
1> ]
oder 'bool operator ==(const Type *,const Colors)'
1> mit
1> [
1> T=Colors
1> ]
1> beim Versuch, die Argumentliste '(Node *, Colors)' anzupassen
1> mit
1> [
1> Key_T=int,
1> Value_T=int
1> ]
Offensichtlich ist die zweite Übereinstimmung das, was ich verwenden wollte, und es ist eine perfekte Übereinstimmung, aber es will trotzdem nicht kompilieren. Was mache ich falsch?