Endlose Parameterliste



  • Bei printf und CString.Format gibt es die Möglichkeit mit /d /i variablen dem Text hinzuzufügen , die man in einer endlosen Parameterliste übergibt z.B.:

    CString test;
    test.Format("Variable 1:/i Variable 2:/i ...",var1,var2,var3,var4,...);
    

    Die Anzahl der benutzen Variablen ist dabei nicht begrenzt.
    Gibt es eine Möglichkeit , dies in einer eigenen Funktion auch einzufügen?



  • Hallo,

    klar ist das möglich, die MS Jungs hatten schließlich auch nicht mehr zur Hand als du 😉 . Siehe hier.

    MfG

    GPC


  • Mod

    ja, mit der ellipse

    ist allerdings besonders in C++ keine gute idee, denn erstens geht jede typsicherheit verloren, und zweitens dürfen nur PODs als argumente benutzt werden. eine bessere methode (wenn auch etwas aufwendiger zu schreiben - am besten mit hilfe von boost.mpl und boost.preprocessor) ist die verwendung von template-überladungen mit unterschiedlicher parameterzahl. (in C++0x gibts dann hoffentlich auch templates mit variabler parameterzahl)

    eine andere möglichkeit ist verkettung von funktionsaufrufen: boost::format machts vor



  • ...ist aber in C++ nicht anzuraten, weil (nicht nur) typunsicher. Nicht umsonst wurden stringstreams und boost::format erfunden. 😉



  • Danke , aber ist schon ok 😉
    Der Parameter wird zwar immer in 'int' umgewandelt , aber die Parameter , die ich benutze sind sowieso nur vom Typ 'char', insofern belasse ich es erst mal bei va_start , va_list und va_end 🙂


Anmelden zum Antworten