Flexible Parameterübergabe
-
Hallo zusammen,
ich habe in einer Klasse eine Methode, die das versenden von Daten per TCP übernimmt. Nun möchte ich diese so allgemein halten, dass ich allgemein die Parameter übergeben kann (bis durch einen void-Pointer).Intern kann die Methode unterscheiden, was kommt und kennt somit auch die Reihenfolge der Parameter.
Um nun aber zB eine Reihe von Strings und int in gemischter Reihenfolge zu übergeben, müsste ich diese zuerst in ein struct legen, da ich nur einen Pointer übergeben kann.
Da ich bisher mehr mit Java gearbeitet habe, habe ich die Hoffnung, dass es eine Art Array gibt, in welches ich verschiedene Typen schmeißen kann (in Java wäre das ein Object-Array).Nun suche ich etwas ähnliches, um nicht für jede Parameterübergabe ein eigenes struct anlegen zu müssen. Über jegliche Hilfe bin ich dankbar.
-
Hallo
da gibts verschiedene Möglichkeiten : TList, TObjectList, TDynamicArray, std::vector<>. Je nachdem was genau du für Daten in den Listen übergeben willst.
Ich würde statt einer Funktion mit void-Parameter lieber eine mit verschiedenen Parameters überladen, damit der Compiler sich das richtige aussucht.
bis bald
akari
-
Hallo,
Man könnte auch ein Array von Variant nehmen. Variablen des Typs Variant können ja mehrere verschiedene Typen repräsentieren. Alternativ dazu wäre vielleicht auch boost::any möglich.
-
Tausend Dank,
eben hat sich geklärt, dass ich wohl eine TList einsetzen werden. Allerdings werde ich mir eure Vorschläge noch mal genauer ansehen. Vielleicht ist da ja noch was passenderes bei.Bis dann
DG