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. 😃


Anmelden zum Antworten