Funktion mit Variabler Parameter-Anzahl?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: Funktion mit Variabler Parameter-Anzahl?

BeitragMo, Okt 18, 2010 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich brauche mal wieder Hilfe, und zwar:
Bei einer Funktion bräuchte ich eine variable Anzahl an Parametern wie in C++:

Code: [AUSKLAPPEN]
 
#include <iostream>
#include <stdarg.h>

            // Deklaration einer Funktion mit einem verlangten Parameter
void ZeigeParameter(int number, ...);

int main()
{
int Index = 5;
int Eins = 1, Zwei = 2;

   ZeigeParameter(Eins, Index);
   ZeigeParameter(3, Index, Index + Zwei, Index + Eins);
   ZeigeParameter(Zwei, 7, 3);

   return 0;
}

void ZeigeParameter(int Zahl, ...)
{
va_list ParameterZg;

   va_start(ParameterZg, Zahl);              // Aufruf an Initialisierungmakro

   std::cout << "Die Parameter sind ";
   for (int Index = 0 ; Index < Zahl ; Index++)
   {
      std::cout << va_arg(ParameterZg, int) << " "; // Extrahiere einen Parameter
   }
   std::cout << "\n";
   va_end(ParameterZg);                        // Schliessmakro
}


// Ergebnis beim Ausführen
//
// Die Parameter sind 5
// Die Parameter sind 5 7 6
// Die Parameter sind 7 3


Gibt es sowas auch bei BB? (Ich möchte möglichst keine Types verwenden, da die Funktion auch bei anderen Programmen funktionieren soll.)

thx schonmal im vorraus,
mfg
SirMO
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

faeX

BeitragMo, Okt 18, 2010 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Geht leider nicht.
Kannst aber in einem String die Parameter die übergeben möchtest mit einem Komma oder so getrennt übermitteln. (Macht ToeB in seiner SimpleUDP2 auch so.)

Holzchopf

Meisterpacker

BeitragMo, Okt 18, 2010 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Variabel geht nicht.

Aber du könntest, wenn du weisst, wie viele es maximal sind, halt genügend optionale Parameter einbauen. Oder als Übergabeparameter ein Blitz-Array entgegennehmen (wobei ich mir aber absolut nicht sicher bin, ob dir das die gewünschte Flexibilität bringt).

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

BladeRunner

Moderator

BeitragMo, Okt 18, 2010 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Nur eingeschränkt: Du kannst Parameter durch einen Defaultwert optional machen:

function Bla(a,b=-1,c=3)

Damit lässt sich die Funktion mit einem - drei Parametern aufrufen. Allerdings ist die Reihenfolge und der Typ der Parameter festgelegt.
Echte Funktionsüberladung bietet BB leider nicht.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

CO2

ehemals "SirMO"

BeitragMo, Okt 18, 2010 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja ok, dann werd ich wohl wirklich Default-Werte eingeben, oder - im schlimmsten Fall - Types benutzen Very Happy

thx für die schnelle hilfe
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group