Operatoren von konstanter Instanz einer Klasse verwenden
-
Hallo,
ich habe ein Problem mit einer Klasse, die einen abstrakten Wert mit darauf definierten Operatoren repräsentiert:
class Value { public: static const Value ZERO; bool operator<(const Value& compValue); private: // interne Repräsentation des Wertes unsigned char* value; }; // Konstruktor Value::Value() { value = new unsigned char[20]; memset(value, 0, 20); } // null-Konstante const Value Value::ZERO; // ein beispielhafter Operator bool Value::operator<(const Value& compValue) { return memcmp(value, compValue.value, 20) < 0 ? true : false; }Ich würde jetzt gerne die Konstante Value::ZERO bei Berechnungen als konstanten null-Wert verwenden und von diesem Wert beispielsweise den <-Operator aufrufen können:
// irgend ein anderer Value-Wert Value a = ...; if ( Value::ZERO < a ) ...Leider geht das nicht:
Die Übergabe von const Value als this-Argument von Value Value::operator<(const Value&) streicht qualifizierer.
Andersherum funktioniert es seltsamerweise:
Value a; if ( a < Value::ZERO ) ...Bin leider noch ziemlicher Anfänger und weiß nicht mehr wirklich weiter... Wäre also über jede Form der Hilfe sehr Dankbar!!
-
operator < sollte const sein dann geht's
bool operator<(const Value& compValue) const;Kurt
-
BlasphemousRumour schrieb:
// ein beispielhafter Operator bool Value::operator<(const Value& compValue) { return memcmp(value, compValue.value, 20) < 0 ? true : false; }Immer wieder interessant die Verwendung boolscher Logik zu sehen.
