kleines Problem mit () operator



  • folgendes Problem:
    ich will hier mittels der if testen ob subroot nicht auf null verweist

    mynode& subroot = check(top);
    if (subroot)  // den operator verwenden
    {
        //
    }
    

    der operator sieht folgendermassen aus

    bool operator() ( )
    {
        return *this != NULL ? true : false;
    }
    

    steh momentan etwas auf der Leitung



  • operator bool()
    {
        return *this != NULL ? true : false;
    }
    

    kann aber auch Probleme in Bezug auf unerwartete Umwandlungen mit sich bringen



  • if (subroot())
    

    sollte reichen. Aber pass auf die Umwandlungen auf, wie finix schon sagte. In C++ ist NULL kein Zeiger.



  • leo aka qsch schrieb:

    der operator sieht folgendermassen aus

    bool operator() ( )
    {
        return *this != NULL ? true : false;
    }
    

    Wow. Versuchst du hier maximale Verwirrung zu stiften? this ist ein Objekt, NULL deutet auf einen Zeiger hin (ist aber ein Integer-Konstante).
    Du brauchst also einen operator!=(const Klasse&, int) oder operator!= (const Klasse&, Zeiger
    z) damit das sinnvoll funktionieren kann. Ohne so einen operator läufst du hier in eine endliche Rekursion. Da es für *this != NULL keinen Operator gibt, werden passende Konvertierungen gesucht. Eine ist bool != NULL, aslo wird *this nach bool konveriert und zwar über den operator-bool. Und das geht so immer weiter.

    Weder this noch *this können von sich aus jemals gleich zu einem Null-Pointer sein. Insofern frage ich mich, was du da eigentlich genau machen willst.



  • und keinen kommentar zu ? true : false? :p



  • ok ich habs jetzt geloest,

    wegen dem Operator, solche Fehler passieren mir immer wieder wenn ich einen Tag c programmiere und dann wieder c++ da komm ich haeufig durcheinander 😞



  • leo aka qsch schrieb:

    wegen dem Operator, solche Fehler passieren mir immer wieder wenn ich einen Tag c programmiere und dann wieder c++ da komm ich haeufig durcheinander 😞

    Wow. Tolle Ausrede für "Ich kann nicht gut programmieren".



  • vermisse was schrieb:

    und keinen kommentar zu ? true : false? :p

    Die Hoffnung, dass hier noch irgendwer boolesche-Logik ehrt habe ich längst aufgegeben 😉



  • haha schrieb:

    leo aka qsch schrieb:

    wegen dem Operator, solche Fehler passieren mir immer wieder wenn ich einen Tag c programmiere und dann wieder c++ da komm ich haeufig durcheinander 😞

    Wow. Tolle Ausrede für "Ich kann nicht gut programmieren".

    glaubst du? an welchen projekten bist du denn beteiligt hm?



  • leo aka qsch schrieb:

    haha schrieb:

    leo aka qsch schrieb:

    wegen dem Operator, solche Fehler passieren mir immer wieder wenn ich einen Tag c programmiere und dann wieder c++ da komm ich haeufig durcheinander 😞

    Wow. Tolle Ausrede für "Ich kann nicht gut programmieren".

    glaubst du? an welchen projekten bist du denn beteiligt hm?

    Naja, lustig ist die ausrede doch schon, oder?
    ich meine: die logik von C und C++ unterscheidet sich hier ja nicht gewaltig 😉



  • leo aka qsch schrieb:

    haha schrieb:

    leo aka qsch schrieb:

    wegen dem Operator, solche Fehler passieren mir immer wieder wenn ich einen Tag c programmiere und dann wieder c++ da komm ich haeufig durcheinander 😞

    Wow. Tolle Ausrede für "Ich kann nicht gut programmieren".

    glaubst du? an welchen projekten bist du denn beteiligt hm?

    Man kann ruhig sagen, dass man nicht besonders gut programmieren kann. Ich gebe kann das auch von mir selbst behaupten, aber ich übe.

    Doch ich glaube nicht, dass leo aka qsch ein schlechter Programmierer ist, weil er mir schon bei vielen Problem geholfen hat(Kannst ja nach seinen Postings suchen) 😉 .

    MfG CSS


Anmelden zum Antworten