cstdarg
-
Gibt es eine Möglichkeit, folgendes zu tun:
void foo (...) { bar(...); //Bar mit den Argumenten aufrufen, die foo bekommen hat }
Muss nicht unbedingt Standard sein
-
jup Dynamische Parameterübergabe
ich verschiebe den thread mal ins C Forum, nicht weil man es unter c++ nicht machen kann, passt einfach besser nach c ANSI C[ Dieser Beitrag wurde am 03.02.2003 um 11:37 Uhr von Dimah editiert. ]
-
Das geht aber nicht:
Ret operator () (const char *dummy ...) { va_list arglist; va_start (arglist, dummy); Ret tmp = function(arglist); va_end (dummy); return tmp; }
-
Geht überhaupt nicht, bar müßte schon eine Funkion sein, die explizit einen va_list Parameter aufnimmt (siehe int vprintf(const char *format, va_list ap); )
Übrigens ist das hier das C-Forum, C++-Fragen gehören nach nebenan.
[ Dieser Beitrag wurde am 09.02.2003 um 21:56 Uhr von Bashar editiert. ]
-
Mich hat jemand verschoben
das muss doch gehen, und in dem link, den dimah gibt scheint es auch zu funktionieren, nur will ich das ohne Dummy char*
-
Sorry.
@Dimah: Gerade weil man es unter C++ mit Vorsicht genießen sollte ist die Diskussion *dort* angebracht.
-
Vorsicht ist klar. Aber was ich machen will ist ziemlich lang zu erklären und deshalb schreib ich hier nur das eigentliche Problem.
-
Die Lösung, die ich bis jetzt hab (ehem, natürlich wieder nur das Notwendigste) ist:
template <class T> struct UnbekannteZurLaufzeitGeladeneFunktionIrgendwoImSpeicher { typedef ReturnType T; typedef ReturnType (*ret_f) (...); ret_f getFunction () { return function; } ret_f operator * () { return getFunction(); } };
Bäh. Da muss ich immer (*f) (a, b, c) machen. Will aber f(a,b,c) machen
undoperator ret_f () { return function; }
geht natürlich nicht
-
meine natürlich
typedef Ret ReturnType;