Bool-Klasse und C2440



  • Hi, ich habe eine Boolean-Klasse

    class Boolean
    {
    public:
    	Boolean();
    	Boolean(const bool& value);
    
    	operator bool();
    	operator bool() const;
    
    protected:
    	bool value;
    };
    

    und bekomme beim Compilieren einen C2440-Error in der Datei xfunctional Zeile 125, weil er Boolean nicht in bool konvertieren kann. Brauche ich evtl. noch weitere Operatoren?

    xfunctional:

    // TEMPLATE STRUCT less
    template<class _Ty>
    	struct less
    		: public binary_function<_Ty, _Ty, bool>
    	{	// functor for operator<
    	bool operator()(const _Ty& _Left, const _Ty& _Right) const
    		{	// apply operator< to operands
    		return (_Left < _Right);
    		}
    	};
    

    Der Fehler kommt wohl in der Zeile mit dem return. Jemand eine Idee?


  • Mod

    Ja, du brauchst einen Konvertierungsoperator, wenn du nach bool konvertieren möchtest. ➡ Google

    edit: Nein, brauchst du doch nicht. Zeile 125 ist Zeile 8 hier im Forum, oder? Dann brauchst du einen Vergleichsoperator.



  • Sieht so aus, als bräuchtest du noch den operator<(), der zwei Boolean Objekte vergleicht. Speicherst du die Objekte in einem Container (set/map/priority_queue)?



  • StellerFragen schrieb:

    C2440-Error in der Datei xfunctional Zeile 125, weil er Boolean nicht in bool konvertieren kann.

    Bitte die ganze Fehlermeldung. Daraus kann man nämlich eigentlich erkennen, was der Fehler ist. Auch wenns ein elend langes Template-Fehler-Horror-Stück sein dürfte, steht da was von "instanciated from x, instanciated from y,..." Und irgendwo taucht eine Zeilenangabe aus deinem Code auf, die ist vor allem anderen interessant. Also bitte Fehlermeldung und deinen zugehörigen Code.



  • Das war ja das irritierende. Da waren keine weiteren Angaben in der Fehlermeldung als die oben genannten. Ich habe den Fehler aber mittlerweile ausfindig gemacht. Und zwar hatte ich in meiner String-Klasse den Rückgabetyp der Operatoren von bool auf Boolean geändert. Mit bool geht es. Für meine Boolean-Klasse brauche ich dann wohl auch die <, > usw. Operatoren.


Anmelden zum Antworten