Kann man eigene RFX Funktionen schreiben?



  • static_cast<long&>(value) vielleicht? Ich kenne die RFX-Sachen nicht, deswegen kann ich nur raten.



  • Wie ist RFX_Long denn definiert?

    Ich hätte es jetzt so gemacht, unter der Annahme, dass RFX_Long einen long& erwartet:

    RFX_Long(pFX, szName, (long&)(long)(value));
    

    Möglicherweise braucht man den (long&)-Cast garnicht.

    Ist nicht schön, ich weiss 😉



  • Glaubst du, ich hab davon Ahnung? 😃 Mehr als die Links da oben kenne ich auch nicht. 😞

    Wenn ich es so mache, wie du vorgeschlagen hast, meldet er:

    error C2440: 'static_cast' : 'unsigned long' kann nicht in 'long &' konvertiert werden
            static_cast-Operator auf Verweis kann nur für gueltige Initialisierungen oder für L-Wert-Konvertierungen zwischen verwandten Klassen verwendet werden
    

    War wohl auch nix.
    Mit einem C-Cast würde es ja gehen, aber da "funktioniert" es ja immer. 🙄



  • Um auf der sicheren Seite zu sein, könntest du den unsigned long auch erst in eine temporäre Variable vom Typ long kopieren. Dann sollte es ohne Probleme gehen.



  • @dEUs: Daran hab ich auch schon gedacht, aber ich habe Angst, dass ich mir damit wieder eine Zeitbombe einbaue. 😞



  • Eigentlich müsste es klappen wenn du die Konvertierung implizit lässt. Glaube nicht, dass man da Probleme hat mit Wertebereichen, sonst würden sie ja auch ein RFX_ULong anbieten.



  • Wieso Zeitbombe?

    Da du das wohl nciht so genau weisst:

    unsigned char uc=255;
    signed char sc=(signed char)uc;
    cout << sc;
    

    Ausgabe müsste -1 sein.

    Analog ist es beim long.



  • Puuuuh... doch... es dämmert... da war mal was. 🙄
    Stimmt, wenn das "dumm" gecastet wird, dann sollte das problemlos funktionieren. 😃

    Danke! 🙂

    Tja, ICH hab die Erklärung verstanden, aber mein Compiler wohl nicht... 😡

    RFX_Long(pFX, szName,  (long)(value));
    
    error C2664: 'RFX_Long' : Konvertierung des Parameters 3 von 'long' in 'long &' nicht moeglich
            Ein Verweis, der nicht auf ein 'const' zeigt, kann nicht an einen Wert gebunden werden, bei dem es sich nicht um einen L-Wert handelt
    
    RFX_Long(pFX, szName,  (long&)(long)(value));
    
    error C2102: '&' erwartet L-Wert
    
    RFX_Long(pFX, szName, value);
    
    error C2664: 'RFX_Long' : Konvertierung des Parameters 3 von 'unsigned long' in 'long &' nicht moeglich
            Ein Verweis, der nicht auf ein 'const' zeigt, kann nicht an einen Wert gebunden werden, bei dem es sich nicht um einen L-Wert handelt
    


  • try this:

    long tmp = (long)value;
    RFX_Long(...,...,tmp);
    


  • Ahhh, es compiliert. 🙂

    Ich habe es aber sicherheitshalber noch zurückgeschrieben (value ist sicherlich nicht ohne Grund eine Übergabe als Referenz):

    long tmp = (long)value;
    		RFX_Long(pFX, szName, tmp);
    		value = (unsigned long)tmp;
    

    Danke! 👍


Anmelden zum Antworten