wie übergebe ich ein Array von Pointer auf Objekte an eine Funktion?



  • Hallo Leute,

    bitte nich schlagen wenn die Frage schon einmal beantwortet wurde, aber ich konnte leider kein passenden Beitrag (sowohl in google als auch in diesem Forum) finden.

    zu meiner Frage:

    class item
    // Eine Klasse als Prototyp eines Listenelementes	
    {
      public:
        int key;
    
        item() {this->key = 0;}
        item(int zahl) {this->key = zahl;}
    };
    
    void mergsort(item pListe[], int anfang, int ende)
    {
        /* ... */
    }
    
    void main()
    {
        item *pListe = new item[5];
    
        pListe[0].key = 7;
        pListe[1].key = 4;
        pListe[2].key = 2;
        pListe[3].key = 6;
    
        mergsort(pListe, 0, 3);
    }
    

    dieses Programm kompeliert so eigendlich problemlos (ohne Fehlermeldung und warnung)

    aber an der stelle

    void mergsort(item pListe[], //...
    

    springt er mir dann wärend der Laufzeit mit der Meldung Stack overflow. raus.

    ich bin mir sicher, das ich das deklarieren von Pointern irgendwo falsch gemacht habe, aber leider finde ich keine andere Möglichkeit.

    zu dem was ich vor habe.

    Ich will eine Liste von Pointern die jewals wieder auf eine Klasse zeigen (also ein Array von Klassen) im Heap erzeugen.
    Die größe dieses Arrays soll während der Laufzeit bestimmt werden.

    Dieses Array soll als Pointer auf das Array an die Funktion mergsort übergeben werden.

    Wie definiere ich denn die Übergabe in der Funktion richtig und sauber?

    Vielen dank für eure mühe im Voraus 🙂

    mfg
    Aileron



  • Syntaktisch sieht das Programm richtig aus. Und wenn es sich mit einem "Stack Overflow" verabschiedet liegt der Fehler vermutlich im Inneren deiner Funktion MergeSort() - ich tippe auf Endlosrekursion.


Anmelden zum Antworten