Funktion dynamisch laden (z.B. Parameter als Array übergeben)



  • Hi,

    in meiner Anwendung verwende ich eine Libary, wo ich eine Funktion mit verschiedenen Parameter aufrufen kann. Wieviele Parameter übergeben werden, ist erst zur Laufzeit bekannt.

    z.B.

    Create_Network(4,2,4,5,6);

    oder

    Create_Network(4,2,4,5,7,5,6);

    Die Parameter habe ich quasi in einem Array stehen und frage mich nun, wie ich am besten die Funktion aufrufen.

    Ich weiß das ich mittels switch Case für jede Anzahl die Funktion starten könnte, bin mir aber nicht sicher, ob es nicht eine bessere Lösung gibt.

    Phil



  • Wo ist das Problem mit dem Array? 🙄
    Du solltest lediglich als zweiten Parameter die Größe des Arrays übergeben:

    int funk(int * arr, int length)
    {
     for(int i=0; i<length; i++)
      cout << arr[i];
    
    return 0;
    }
    
    void main()
    {
    int a[3];
    funk(a, 3); //oder so: funk(a, sizeof(a)/sizeof(int));
    }
    


  • Hallo,

    Wenn du die Parameter quasi in einem Array stehen hast, warum übergibst du dann nicht auch ein Array? Ansonsten ist switch/case schon ok. Du könntest als Alternative auch ein Array (oder map) von Funktionszeigern verwenden. Ich glaube aber nicht, dass sich der Aufwand lohnt.



  • @rean
    Besser wäre es hier gleich einen vector zu nehmen, da spart man sich die Übergabe der Größe.



  • @Braunstein
    Ja schon aber es handelt sich ja hier offensichtlich um einen nicht allzu versierten Kollegen. Da wollte ich das so einfach wie möglich machen.



  • Ok, dann mach aber bitte noch den Punkt bei arr weg. 🙂



  • Kommt davon wenn man im Halbschlaf noch was runtercodet^^
    Haste natürlich recht.


Anmelden zum Antworten