Hallo,
mal wieder ein Problem. Man kann einer Class ja Callback-Funktionen geben, indem man den Typ dieser Callback-Funktionen vorher per typedef benennt. Dort kann man ja auch angeben, daß diese Funktion Default-Parameter haben soll, also Parameter, die bei nicht vorhandensein in der Funktion einen Standard-Wert erhalten.
int (*pBlaBlubb)(int ParamA, int ParamB, int ParamC = 10);
wobei bei einem Aufruf dieser Callback Funktion mit
meinObjekt.Callback(20,30,40);
in der Funktion der Parameter ParamC den Wert 40 hätte. Beim Aufruf
meinObjekt.Callback(20,30);
hätte der hier nicht angegebene Parameter ParamC den Wert 10. Ich kann diesen Typ von Funktionaufruf ja nur mit Default-Parametern universell angeben, weil ich ja nicht weiß, auf was für eine Art die Funktion nun später aufgerufen wird.
Das Problem ist nun folgendes:
ich versuche das Programm mit dem neuen Visual Studio .NET 2003 zu übersetzen. Der darin enthaltene Compiler kann aber leider keine Default-Parameter mehr.
Ich müsste also Wrapper-Funktionen schreiben, die die eigentliche Funktion mit dem gewünschten Parameter-Set überlädt.
Das Objekt meinObjekt enthält nun den Funktions-Zeiger "Callback", welcher auf die aufzurufende Funktion zeigt. Na? Ahnt ihr schon, worauf ich hinaus will? Wie sage ich dem Compiler nun, bzw. dem System, daß für die Funktion hinter Callback mehrere überladene Funktionen existieren, und welche davon es aufrufen muss? Der Zeiger Callback zeigt ja explizit auf eine der überladenen Funktionen. Diese hat aber eine feste Anzahl Parameter. Für diese Problematik haben wir halt Default-Parameter verwendet. Logischer Schritt. Aber was kommt jetzt, wo der neue Compiler diese nicht mehr unterstützt? Wie macht man sowas jetzt?
Danke!
Gruß,
Hendrik
mal wieder ein Problem. Man kann einer Class ja Callback-Funktionen geben, indem man den Typ dieser Callback-Funktionen vorher per typedef benennt. Dort kann man ja auch angeben, daß diese Funktion Default-Parameter haben soll, also Parameter, die bei nicht vorhandensein in der Funktion einen Standard-Wert erhalten.
int (*pBlaBlubb)(int ParamA, int ParamB, int ParamC = 10);
wobei bei einem Aufruf dieser Callback Funktion mit
meinObjekt.Callback(20,30,40);
in der Funktion der Parameter ParamC den Wert 40 hätte. Beim Aufruf
meinObjekt.Callback(20,30);
hätte der hier nicht angegebene Parameter ParamC den Wert 10. Ich kann diesen Typ von Funktionaufruf ja nur mit Default-Parametern universell angeben, weil ich ja nicht weiß, auf was für eine Art die Funktion nun später aufgerufen wird.
Das Problem ist nun folgendes:
ich versuche das Programm mit dem neuen Visual Studio .NET 2003 zu übersetzen. Der darin enthaltene Compiler kann aber leider keine Default-Parameter mehr.
Ich müsste also Wrapper-Funktionen schreiben, die die eigentliche Funktion mit dem gewünschten Parameter-Set überlädt.
Das Objekt meinObjekt enthält nun den Funktions-Zeiger "Callback", welcher auf die aufzurufende Funktion zeigt. Na? Ahnt ihr schon, worauf ich hinaus will? Wie sage ich dem Compiler nun, bzw. dem System, daß für die Funktion hinter Callback mehrere überladene Funktionen existieren, und welche davon es aufrufen muss? Der Zeiger Callback zeigt ja explizit auf eine der überladenen Funktionen. Diese hat aber eine feste Anzahl Parameter. Für diese Problematik haben wir halt Default-Parameter verwendet. Logischer Schritt. Aber was kommt jetzt, wo der neue Compiler diese nicht mehr unterstützt? Wie macht man sowas jetzt?
Danke!
Gruß,
Hendrik