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!