Wie mit "..." umgehen?
-
Jetzt mal ganz ehrlich: Ich finde keinen passenden Eintrag?
-
Das ...-Symbol heisst «Ellipse» und sollte eigentlich nicht ohne Not verwendet werden. Erstens gibt es keine Typsicherheit dabei, zweitens kannst du keine Klasseninstanzen (bzw. nicht-POD-Typen) übergeben, und drittens wissen 99% der C++-Programmierer überhaupt nicht, wie sie damit umgehen sollen. Mein Rat: Lass die Ellipse bei printf, wo sie hingehört.
In der FAQ find ich dazu komischerweise wirklich nichts, aber Hume Sikkins hat dazu hier schon einige mal was geschrieben, vielleicht mal die Suche ausprobieren.
-
Ok, war auch ANSI-C-Forum: http://www.c-plusplus.net/forum/viewtopic.php?t=39350
-
Keine Ahnung, wie man Ellipsis nennt. Ich benutze sie nicht, zumindestens nie so, wie Sie gedacht waren.
-
Oh man, war ich lahm.
-
Aber eigentlich ist die ellipse doch dann echt nützlich für funktionen wo man z.b. nicht weiß wieviel integer übergeben werden? einfach (int a, int b, int ...) machen und schon hat man auch eine typsicherheit
-
Da gibts etwas, dass sich Datenfeld nennt und deutlich kompfortabler ist.
-
root123 schrieb:
einfach (int a, int b, int ...) machen und schon hat man auch eine typsicherheit
Inwiefern hat man da Typsicherheit? Das deklariert eine Funktion mit 3 Pflichtargumenten vom Typ int (das dritte davon namenlos) und unbestimmten weiteren Argumenten.
-
@helium wie kann ich denn ein array an eine funktion übergeben ?
@bashar vielleicht verstehe ich auch was falsch aber unter typsicherheit dachte ich das du meinst wenn man (...) kann alles übergeben werden, float, int, double usw. mit int ... wär das gegessen.
Was meinst du dann?
-
-
Du scheinst zu glauben, an foo(int ...) könne man nur ints übergeben.
-
hmm ok das dachte ich auch
aber gut das du mich belehrt hast
@dEus
hast du evt ein beispiel? habs per referenz versuch, ging nur mit einzelnen arrayfeldern aber nicht mit dem ganzen packet
-
void foo(int *pIntArray, int nElements) { } ... int Array[5]={1,2,3,4,5}; foo(Array,5);
-
so gehts auch:
void foo(int IntArray[], int nElements) { } ...
-
"..." kann darauf hindeuten da eine eventuelle reimplementierung bzw ein weiteres neuargument implementiert wird.